数据结构学习笔记10--栈和队列中的一些重点易错知识点
2017-11-09 21:09
411 查看
1.链栈中为何不设置头结点?
因为栈是后进先出的数据结构,我们不可能直接就对栈底元素进行操作,要想操作栈底元素,必须得先依次让非栈底元素出栈。
线性表和队列如果用链表在插入删除时有头部和其他部位的操作差别,需要用头结点来统一操作。而栈只在栈顶插入删除,所以不必要用头结点。( 链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。)
2.循环队列的优点是什么? 如何判别它的空和满?
循环队列的优点是:它可以克服顺序队列的"假上溢"现象,能够使存储队列的向量空间得到充分的利用。判别循环队列的"空"或"满"不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是少用一个元素的空间,每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。
3.设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢?
当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。
因为栈是后进先出的数据结构,我们不可能直接就对栈底元素进行操作,要想操作栈底元素,必须得先依次让非栈底元素出栈。
线性表和队列如果用链表在插入删除时有头部和其他部位的操作差别,需要用头结点来统一操作。而栈只在栈顶插入删除,所以不必要用头结点。( 链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。)
2.循环队列的优点是什么? 如何判别它的空和满?
循环队列的优点是:它可以克服顺序队列的"假上溢"现象,能够使存储队列的向量空间得到充分的利用。判别循环队列的"空"或"满"不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是少用一个元素的空间,每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。
3.设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢?
当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。
相关文章推荐
- 【学习笔记10】基本数据结构(栈 队列 链表 有根树)
- 数据结构学习笔记 --- 栈、队列 (习题)
- 数据结构学习笔记--队列
- 数据结构学习笔记(二) 链表之链队列基本操作
- 《大话数据结构》--学习笔记10 ***重点***
- python数据结构学习笔记-2016-11-05-02-优先级队列
- IOS学习笔记48--一些常见的IOS知识点+面试题
- 学习MySQL的一些记录笔记(1)10-28
- python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
- python数据结构学习笔记-4-堆栈 队列
- 数据结构学习笔记10——区分叶结点与分支结点的二叉树实现方案二
- 【黑马程序员-学习笔记】数据结构-栈与队列
- 数据结构学习笔记-队列的顺序存储(循环队列)
- Struts2.0学习笔记 --- 一些零碎知识点
- [置顶] Android 学习笔记一些小知识点(2014.08.25更新)
- 第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)
- 数据结构学习笔记6(队列)
- 数据结构学习笔记——队列
- 数据结构学习笔记--(1)数据结构知识点
- 学习 严蔚敏讲数据结构笔记10