1.3.2线性表的顺序存储结构 (P13—P14)
在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序分配 。
线性表的顺序存储结构具有以下两个基本特点:
①线性表中所有元素据所占的存储空间是连续的;
②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的 。
假设线性表中的第一个数据元素的存储地址为ADR(a1),每一个数据元素占K个字节,则线性表中第i 个元素ai在计算机存储空间中的存储地址为
ADR(a1)=ADR(a1)+(i-1)K
1.3.3顺序表的插入运算 (P14—P15)
在平均情况下,要在线性表中插入一个新元素,需要移动表中一半的元素 。因此,在线性表顺序存储的情况下,要插入一个新元素,其效率是很低的 。
1.3.4顺序表的删除运算 (P15—P16)
在平均情况下,要在线性表中删除一个元素,需要移动表中表中一半的元素 。因此,在线性表顺序存储的情况下 , 要删除一个元素 , 其效率也是很低的 。
由线性表在存储结构下的插入与删除运算可以看出 , 线性表的顺序存储结构对于小线性表或者其中元素不常变动的线性表来说是合适的,因为顺序存储的结构比较简单 。但这种顺序存储的方式对于元素经常需要变动的大线性表就不太合适了,因为插入删除的效率比较低 。
1.4栈和队列
1.4.1栈及其基本运算 (P16—P18)
1.什么是栈
栈是限定在一端进行插入与删除的另一端称为栈底 。即栈是按照“先进后出”(FILO)或“后进先出”(LIFO)的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表 。由此可以看出,栈具有记忆作用 。
2.栈的顺序存储及其运算(采用顺序存储结构的栈称为顺序栈)
栈的基本运算有三种:入栈、退栈与读栈顶元素 。
(1)入栈运算(2)退栈运算(3)读栈顶元素
1.4.2队列及其基本运算 (P18—P20)
1.什么是队列
队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表 。允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,一端称为排头(也称为队头)通常也用一个排头指针(front)指向排头元素的前一个位置 。
队列双称为“先进先出”或“后进后出”的线性表 。
3.循环队列及其运算
在实际应用中,队列的顺序存储结构一般采用循环队列的形式 。
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间 , 供队列循环使用 。
(1)入队运算
(2)退队运算
1.5线性链表
1.5.1线性链表的基本概念 (P20—P23)
由于线性表的顺序存储结构存在以上这些缺点,对于大的线性表,特别是元素变动频繁的大线性表不宜采用顺序存储结构,而是采用下面要介绍的链式存储结构 。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域 。
在链式存储结构中,存储数据结构的存储空间可以下连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的 。
链式存储方式既可用于表示线性结构,也可以用于表示非线性结构 。
1.线性链表
线性表的链式存储结构称为线性链表 。
2.带链的栈
栈也是线性表 , 也可以采用链式存储结构 。
3.带链的队列
与栈类似,队列也是线性表 , 也可以采用链式存储结构 。
1.5.2线性链表的基本运算 (P23—P25)
推荐阅读
- 节拍器下载,架子鼓节拍器下载
- flutter打包手机打不开,flutter打包ios并上架
- 电脑连接硬盘怎么连,电脑硬盘的连接
- mysql消耗过大怎么办 mysql耗cpu
- Python中个标点符号作用,python中标点符号的用法
- 直播加加为什么卡,直播加加直播有声音吗
- 游戏革命开发,革命时代游戏
- php原生语句查询数据库 php原生类
- mongodb索引慢,mongo索引调优