文档介绍:公共基础知识
数据结构和算法
算法
算法是指解决方案准确而完备的描述
算法的基本特征:可行性、确定性、有穷性(算法程序的运行时间是有限的)、拥有足够的
情报
算法的基本要素:算法对数据的基本运算和操作、算法的控制结构(顺序结构、元素即Front二Front+1,不能进行退队运算,这种情况称为“下溢” 错误。
练习
正确观点如下:
栈与队列都是线性结构
在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
在循环队列中,元素的个数是由队头指针和队尾指针共同决定的
循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针
在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况I错
在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况1误
循环队列的存储空间为Q(1 : 60),初始状态为空。经过一系列正常的入队与退队操作 后,front=24,rear=
某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队 操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为m-1
设循环队列存储空间为Q(1:50),初始状态为front=rear= 操作后,front=rear=25,则该循环队列中元素个数为0或50
设循环队列的存储空间为Q(1:50),初始状态为front=rear=50,现经过一系列入队 与退队操作后,front=rear=1,此后又正常地插入了两个元素,最后该队列中的元素个 数为2
循环队列的存储空间为Q(1:50),初始状态为人、front=rear= 入队与退队操作后,front=rear=25,此后又插入了一个元素,则循环队列中的元素个数 为1或50且产生上溢错误
设栈的顺序存储空间为S(1:50),初始状态为top=, top=
设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶 元素)。则栈中的元素个数为20
设栈的顺序存储空间为S(1: m),初始状态为top=m + 1,现经过一系列入栈与退栈运 算后,top=20,则当前栈中的元素个数为m-19
栈的开口向上还是向下由初始状态决定,初始状态若为最大值的地方,栈的开口向下
设栈与队列初始状态为空,将元素A,B,C,D,E,F,G,H依次轮流入队和入栈,然后依次轮流 退队和出栈,则输出序列为A,H,C,F,E,D,G,B
线性链表的基本概念
线性表的顺序存储结构具有简单、运算方便等优点,特别是对于小线性表或长度固定的线性 表,采取顺序存储结构的优越性更为突出。但是,对于大的线性表,特别是元素变动频繁的 大线性表,不宜采取顺序存储结构,而是采用链式存储结构。……
HEAD 一*数据1 指针 快 数据2 指针-一数据n NULL
双向链表具有两个或两个以上指针域
线性链表的逻辑结构
HEAD-
双向链表示意图
TOP
数据1
数据2
数据n
NULL
带链的栈
以上3种均为线性结构
练习
✓只有一个根节点且只有一个叶子节点的数据结构也可能是非线性结构
✓顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
✓循环队列是线性结构
✓有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
✓线性链表各数据节点的存储空间可以不连续,存储顺序与逻辑顺序也没有必然联系
✓顺序存储结构的存储空间是连续的
✓在双向链表、二叉链表和循环链表中,可以从任何一个节点开始直接遍历到所有节点。
✓循环队列是队列的顺序存储结构
✓ 带链的栈与队列是线性结构
顺序存储结构能存储有序表,链式存储结构不能存储有序表 X
顺序/链式存储结构(物理结构)与有/无序表(逻辑结构)没有必然联系
同理,能顺序存储的数据结构一定是线性结构 X
链式存储结构比顺序存储结构节省空间 X
链式存储结构浪费空间
在线性单链表中,可以从任何一个节点开始直接遍历到所有节点 X
单链表只有1个指针
循环链表是循环队列的链式存储结构 X
循环链表和循环队列没有关系
栈和队列只能顺序存储 X
存储空间不连续的所有链表一定是非线性结构 X
填空
带链栈空的条件是
top=-1 且 bottom = NULL =bottom = NULL
=NULL 且 bottom = -1 =bottom = -1
在带链队列中,经过一系列正常操作后,如果front=rear,则队列中的元素个数为0