公共基础课件().pptVIP

  • 8
  • 0
  • 约1.06万字
  • 约 72页
  • 2016-11-03 发布于贵州
  • 举报
全国计算机等级考试 二级公共基础 栈 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的表尾端进行。如下所示: 进行插入和删除的表尾端是浮动端,通常被称为栈顶, an 为栈顶元素, 并用一个“栈顶指针”指示;而表头端是固定端,通常被称为栈底,a1为栈底元素。我们经常将栈用下图的形式描述: 栈的特征 结论:后进先出(Last In First Out),简称为LIFO线性表。 举例1:家里吃饭的碗,通常在洗干净后一个一个地落在一起存放,在使用时,若一个一个地拿,一定最先拿走最上面的那只碗,而最后拿出最下面的那只碗。 举例2:在建筑工地上,使用的砖块从底往上一层一层地码放,在使用时,将从最上面一层一层地拿取。 举例3:子弹夹。 栈的基本运算 (1)插入元素称为入栈运算; (2)删除元素称为退栈运算; (3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化 1.4.2 队列及其基本运算 队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。 例如:排队购物。操作系统中的作业排队。先进入队列的成员总是先离开队列。因此队列亦称作先进先出(First In First Out)的线性表,简称FIFO表。 当队列中没有元素时称为空队列。在空队列中依次加入元素a1,a2,…an之后,a1是队头元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,…an ,也就是说队列的修改是依先进先出的原则进行的。 下图是队列的示意图:              a1 a2 … an          队列的顺序存储结构 存在问题 设数组维数为M,则: 当front=-1,rear=M-1时,再有元素入队发生溢出——真溢出 当front?-1,rear=M-1时,再有元素入队发生溢出——假溢出 解决方案 队首固定,每次出队剩余元素向下移动——浪费时间 循环队列 基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear+1==M,则令rear=0; 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。 队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。 队列运算包括 (1)入队运算:从队尾插入一个元素; (2)退队运算:从队头删除一个元素。 循环队列: s=0表示队列空 s=1且front=rear表示队列满 1.5 线性链表 1.5.1 线性链表的基本概念 线性表顺序存储结构的特点:是一种简单、方便的存储方式。它要求线性表的数据元素依次存放在连续的存储单元中,从而利用数据元素的存储顺序表示相应的逻辑顺序,这种存储方式属于静态存储形式。 线性表顺序存储结构暴露的问题 在做插入或删除元素的操作时,会产生大量的数据元素移动; 对于长度变化较大的线性表,要一次性地分配足够的存储空间,但这些空间常常又得不到充分的利用; 线性表的容量难以扩充。 线性表的链式存储结构 线性表的链式存储结构: 指用一组任意的存储单元(可以连续,也可以不连续)存储线性表中的数据元素。 链表中结点的逻辑次序和物理次序不一定相同 为了存储线性表中的每一个元素,一方面要存储数据元素的值,另一方面要存储各数据元素之间的前后件关系 数据结构中的每一个元素对应于一个存储单元,这种存储单元称为存储结点,简称结点。 存储空间中的每一个结点分两部分:一部分用于存储元素的值,称数据域;另一部分用于存放下一个数据元素的 存储序号(存储结点的地址),即指向后件结点,称为指针域。 例如 :线性表 (a, b,c,d) 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 链式存储方式即可用于表示线性结构,也可用于表示非线性结构。 线性(单)链表的逻辑结构 链式存储结构的特点 (1)线性表中的数据元素在存储单元中的存放顺序与逻辑顺序不一定一致; (2)在对线性表操作时,只能通过头指针进入链表,并通过每个结点的指针域向后扫描其余结点,这样就会造成寻找第一个结点和寻找最后一个结点所花费的时间不等,具有这种特点的存取方式被称为顺序存取方式。 1.5.2 线性链表的基本运算 1、在线性链表中查找指定元素 在对线性链表进行插入或删除的运算中,总是首先需要找到插入或删除的位置,这就需要对线性链表进行扫描查找,要找到线性链表中指定值的前一个结

文档评论(0)

1亿VIP精品文档

相关文档