今天我想分享我从题目选项的对错中汲取栈和队列实现的知识要点,一直以来,我都以这样的方式去记录我的错题,尤其是选择题,在我看来,若是完整的记录整道题,那太浪费时间了,但若是只记录选项,对的选项通过自己的加工就能成为正确的知识点,错的选项只要添加否定词,便成为了具有否定含义的知识点。
以下便是在栈和队列实现选择题中所收集到的部分知识点:
1.栈是一种后进先出的数据结构,队列是先进先出的。
2.顺序表和链表都可以用来实现栈,不过一般都使用顺序表,因为栈相当于是阉割版的顺序表,只用到了顺序表的尾插和尾删操作,顺序表的尾插和尾删不需要搬离元素,效率非常高,故一般都是使用顺序表实现。
3.栈只能在栈顶进行输入的插入和删除操作。
4.栈是有入栈和出栈操作,出栈就是从栈中删除一个元素。
5.链栈,一般需要进行头插或者头删操作,而顺序表一般进行尾插和尾删操作,链表的操作比顺序表复杂,因此使用顺序结构实现栈更简单。
6.链式结构实现栈时,每次入栈相当于链表中头插一个节点,没有扩容一说。
7.一个栈模拟入队列,一个栈模拟出队列,出队列时直接弹出模拟出队列栈的栈顶元素,当该栈为空时,将模拟入队列栈中所有元素导入即可,不是每次都需要导入元素。
8.栈和队列的特性是相反的,一个栈实现不了队列。
9.一个栈模拟入队列,一个栈模拟出队列,入队列时,将元素直接往模拟入队列的栈中存放。
10.出队操作,一定会影响头指针,如果出队之后,队列为空,会影响尾指针。
11.数据入队列时一定从尾部插入。
12.队列只能从队头删除元素。
13.栈是尾部插入和删除,一般使用顺序表实现,队列是头部删除尾部插入,一般使用链表实现。
14. 栈是后进先出,尾部插入和删除,队列是先进先出,尾部插入头部删除。
15. 栈只能访问栈顶元素,不支持随机访问,队列也不支持。
16.队列适合使用链表实现,使用顺序表(即固定的连续空间)实现时会出现假溢出的问题,因此设计循环队列就是为了解决顺序结构实现队列假溢出问题的。
17.循环队列的长度都是固定的。
18. 对头和队尾在同一个位置时,队列可能是空的,也可能是满的。
19通过设置计数的方式可以判断队列空或者满。
20.循环队列也是队列的一种,是一种特殊的线性数据结构。
21.设置计数即添加一个字段来记录队列中有效元素的个数,如果队列中有效元素个数等于空间总大小时队列满,如果队列中有效元素个数为0时队列为空。