数据结构——栈和队列易错题

1.当栈中元素为n个时,做进栈运算发生上溢,证明栈的最大容量为n

2.栈和队列具有相同的逻辑结构

3.若一个栈的输入序列为p1,p2,p3,....,pn,输出序列为1,2,3,...,n,若p3=1,则p1的值为(C)

A.可能是2              B.一定是2                 C.不可能是2          D.不可能是3

4.若已知一个栈的入栈序列是1,2,3,4,其出栈序列为P1,P2,P3,P4,则P2,P4不可能是(C)

A.2,4                B.2,1                C.4,3                D.3,4

5.一个栈的入栈序列为1,2,3,....,n,出栈序列为P1,P2,P3,.....,Pn,若P2=3,则P3的可能取值个数为(C)

A.n-3              B.n-2             C.n-1              D.无法确定

6.设栈的初始状态为空,当字符序列"n1_"作为栈的输入时,输出长度为3,且可用做C语言的标识符的序列有(C)个

A.4                          B.5                      C.3                               D.6

7.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留,可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以d开头的序列个数为(B)

A.3                   B.4                         C.5                        D.6

8.利用共享栈的好处是节省存储空间,降低发生上溢的可能

答:因为栈的插入和删除操作均在栈顶进行,所以只有可能发生上溢

9.下列关于栈的叙述,错误的是(C)

①.采用非递归方式重写递归程序时必须用到栈           反例:斐波那切数列

②.函数调用时,系统要用栈保存必要的信息

③.只要确定了入栈次序,即可确定出栈次序

④.栈是一种操作受限的线性表,允许在两端操作

A.仅①                  B.仅①、②、③                   C.仅①、③、④                       D.仅②、③、④

10.对于链队,在进行出队操作时(D)

A.仅修改头指针

B.仅修改尾指针

C.头尾指针都要修改

D.头尾指针可能都要修改

答:出队一个元素只需修改头指针,出队所有元素则需要修改头尾指针

11.循环队列存储在数组[0,....,m]中,则入队时的操作为(D)

A.rear=rear+1                        B.rear=(rear+1)%(m-1)                C.rear=(rear+1)%m                  D.rear=(rear+1)%(m+1)

答:rear=(rear+1)%maxsize中的maxsize指的是数组最大元素个数

12.最大容量为maxsize的循环队列,队尾指针为rear,队首指针为front,则队空条件为rear==front

13.栈和队列的共同点为都只允许在端点处进行插入和删除元素

14.最不适合用作链栈的链表是(以下链表没有头结点)(D)

A.只有表头指针,没有表尾指针的循环双链表

B.只有表尾指针,没有表头指针的循环双链表

C.只有表尾指针,没有表头指针的循环单链表

D.只有表头指针,没有表尾指针的循环单链表

答:选项D在插入元素时无法快速更新尾结点的next域,也就是不方便找到开始节点的前驱结点

15.设循环队列的下标范围为0~n-1,其头、尾指针分别为 f 和 r ,则其元素个数为(r-f+n)%n

答:画图即可

16.最适合用作链队的链表(链表有头结点,有队首指针则指向头结点,有队尾指针则指向尾结点)的是(B)

A.只带队首指针的循环单链表

B.只带队尾指针的循环单链表

C.只带队首指针的非循环单链表

D.只带队尾指针的非循环单链表

17.最不适合用作队列的链表是(A)

A.只带队首指针的非循环双链表

B.只带队首指针的循环双链表

C.只带队尾指针的循环双链表

D.只带队尾指针的循环单链表

答:A选项找到尾结点的时间复杂度为O(n),其余选项入队出队均为O(1)

18.用单链表(含头结点)表示的队列的队头在链表的(BC)位置

A.链头                 B.链尾                    C.链中                       D.以上都可以

答:当队列元素多于1个时,队头在链表的链中位置(链中位置指的是除去表头结点和表尾结点以外的节点位置,头结点算是链头位置);当队列元素只有1个时,队头节点在链表的链尾位置

19.已知一个栈的进栈序列为p1,p2,p3,...,pn,输出序列为1,2,3,.....,n,若p3=1,则p1(C)

A.可能是2                   B.一定是2                     C.不可能是2                        D.不可能是3

答:p3为1且1为第一个出栈元素,说明p1,p2,p3连续进栈,第二个出栈元素为2,而此时栈顶为p2,p1在栈底,因此只有p2,p3,...,pn这些元素之一为2,p1不可能为2

20.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素出栈,则在所有可能的出栈序列中,d开头的序列个数为4

答:由题意得abc已连续入栈,因此abc的栈内先后顺序已定,....c.....b.....a.....,加上d的位置已定,则出栈序列满足d....c.....b.....a.....,刚好4种,学会这种方法

21.一个栈的入栈序列为1,2,3,....,n,出栈序列为p1,p2,....,pn,若p2=3,则p3可能取值个数为n-1

22.栈的应用不包括缓冲区,缓冲区是用队列实现的,递归,进制转换,迷宫求解都是栈的经典应用

23.页面替换算法用到的是队列

24.

你可能感兴趣的:(数据结构,数据结构)