数据结构栈和队列习题与答案.docx
《数据结构栈和队列习题与答案.docx》由会员分享,可在线阅读,更多相关《数据结构栈和队列习题与答案.docx(10页珍藏版)》请在冰豆网上搜索。
![数据结构栈和队列习题与答案.docx](https://file1.bdocx.com/fileroot1/2023-1/3/02276cb1-fa0b-4c2f-8cf1-a98858857493/02276cb1-fa0b-4c2f-8cf1-a988588574931.gif)
数据结构栈和队列习题与答案
一、单选题
1、元素A、B、C、D依次进栈后,栈顶元素是_______。
A.B
B.D
C.C
D.A
正确答案:
B
2、经过以下运算后,x的值是_______。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x)
A.0
B.b
C.a
D.1
正确答案:
C
3、经过以下栈运算后,StackEmpty(s)的值是_______。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,y)
A.0
B.b
C.a
D.1
正确答案:
D
4、已知一个栈的进栈序列是ABC,出栈序列为CBA,经过栈的操作是_______。
A.push,push,push,pop,pop,pop
B.push,pop,push,push,pop,pop
C.push,push,pop,pop,push,pop
D.push,pop,push,pop,push,pop
正确答案:
A
5、若元素a、b、c、d、e、f依次进栈,允许进栈、退栈的操作交替进行,但不允许连续3次退栈工作,则不可能得到的出栈序列是_______。
A.bcaefd
B.afedcb
C.cbdaef
D.dcebfa
正确答案:
B
6、设一个栈的输入序列为A、B、C、D,则借助一个栈所得的输出序列不可能是_______。
A.DCBA
B.DABC
C.ACDB
D.ABCD
正确答案:
B
7、一个栈的进栈序列是abcde,则栈的不可能的输出序列是_______。
A.decba
B.abcde
C.dceab
D.edcba
正确答案:
C
8、已知一个栈的进栈序列是1,2,3,…n,其输出序列的第一个元素是i(1≤i≤n),则第j(1≤j≤n)个出栈元素是_______。
A.n-i
B.j-i+1
C.i
D.不确定
正确答案:
D
9、已知一个栈的进栈序列是1,2,3,…n,其输出序列是p1,p2,…pn,若p1=n,则pi的值是_______。
A.不确定
B.n-i+1
C.n-i
D.i
正确答案:
B
10、设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若pn=1,则pi(1≤i≤n-1)的值是_______。
A.不确定
B.i
C.n-i
D.n-i+1
正确答案:
D
11、设n个元素的进栈序列是1,2,3,…n,其输出序列是p1,p2,…pn,若p1=3,则p2的值是_______。
A.一定是1
B.以上都不对
C.不可能是1
D.一定是2
正确答案:
C
12、设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若p3=1,则p1的值是_______。
A.不可能是2
B.不可能是3
C.一定是2
D.可能是2
正确答案:
A
13、设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若p3=3,则p1的值是_______。
A.可能是2
B.不可能是1
C.一定是1
D.一定是2
正确答案:
A
14、设有5个元素的进栈序列是a,b,c,d,e,其输出序列是c,e,d,b,a,则该栈的容量至少是_______。
A.2
B.4
C.1
D.3
正确答案:
B
15、在数据处理过程中常需要保存一些中间数据,如果后保存的数据先处理,则使用_______来保存这些数据。
A.栈
B.队列
C.线性表
D.单链表
正确答案:
A
16、判定一个顺序栈st为(元素个数最多为MaxSize)空的条件为_______。
A.st.top==MaxSize
B.st.top!
=MaxSize
C.st.top!
=-1
D.st.top==-1
正确答案:
D
17、判定一个顺序栈st为(元素个数最多为MaxSize)为栈满的条件为_______。
A.st.top=-1
B.st.top!
=MaxSize-1
C.st.top!
==-1
D.st.top==MaxSize-1
正确答案:
D
18、表达式a*(b+c)-d的后缀表达式是_______。
A.abcd*+-
B.abc*+d-
C.-+*abcd
D.abc+*d-
正确答案:
D
19、若一个栈用数组data[1..n]存储,初始栈顶指针top为n+1,则以下元素x进入栈的正确操作是_______。
A.top--;data[top]=x;
B.top++;data[top]=x;
C.data[top]=x;top--;
D.data[top]=x;top++;
正确答案:
A
20、若一个栈用数组data[1..n]存储,初始栈顶指针top为n,则以下元素x进入栈的正确操作是_______。
A.top--;data[top]=x;
B.data[top]=x;top--;
C.top++;data[top]=x;
D.data[top]=x;top++;
正确答案:
B
21、若一个栈用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进入栈的正确操作是_______。
A.data[top]=x;top++;
B.data[top]=x;top--;
C.top--;data[top]=x;
D.top++;data[top]=x;
正确答案:
D
22、若一个栈用数组data[1..n]存储,初始栈顶指针top为1,则以下元素x进入栈的正确操作是_______。
A.top--;data[top]=x;
B.data[top]=x;top++;
C.top++;data[top]=x;
D.data[top]=x;top--;
正确答案:
B
23、链栈与顺序栈相比有一个明显的优点,即_______。
A.总是不会出现栈空的情况
B.删除操作更加方便
C.通常不会出现栈满的情况
D.插入操作更方便
正确答案:
C
24、以下各链表均不带有头节点,其中最不合适用作链栈的链表是_______。
A.只有表头指针没有表尾指针的循环单链表
B.只有表尾指针没有表头指针的循环双链表
C.只有表尾指针没有表头指针的循环单链表
D.只有表头指针没有表尾指针的循环双链表
正确答案:
A
25、如果以链表作为栈的存储结构,则退栈操作时_______。
A.判断链栈元素的类型
B.对链栈不做任何判断
C.必须判断链栈是否空
D.必须判断链栈是否为满
正确答案:
C
26、向一个不带头节点的栈顶指针为lst的链栈中插入一个s所指向节点时,则执行_______。
A.s->next=lst->next;lst->next=s;
B.lst->next=s;
C.s->next=lst;lst=s;
D.s->next=lst;lst->next=s;
正确答案:
C
27、从一个不带头节点的栈顶指针为lst的栈链中删除一个节点时,用x保存被删节点的值,则执行_______。
A.x=lst->data;lst=lst->next;
B.x=lst;lst=lst->next;
C.lst=lst->next;x=lst->data;
D.x=lst->data
正确答案:
A
28、栈和队列的不同点是_______。
A.都不是线性表
B.没有不同点
C.都是线性表
D.栈只能在一端进行插入删除操作,而队列在不同端进行插入删除操作
正确答案:
D
29、经过下列运算后,队头的元素是_______。
InitQueue(qu);Enqueue(qu,‘a’);EnQueue(qu,‘b’);EnQueue(qu,‘c’);DeQueue(qu);
A.b
B.a
C.0
D.1
正确答案:
A
30、若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变_______。
A.front
B.rear
C.以上都不对
D.front和rear
正确答案:
B
31、循环队列qu的队满条件(front队首指针指向队首元素的前一位置,rear队尾指针指向队尾元素)是_______。
A.(qu.rear+1)%maxsize==qu.front+1
B.(qu.rear+1)%maxsize==qu.front
C.qu.rear==qu.front
D.(qu.rear+1)%maxsize==(qu.front+1)%maxsize
正确答案:
B
32、设循环队列中数组的下标是0~N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则元素个数为_______。
A.r-f
B.r-f-1
C.(r-f)%N+1
D.(r-f+N)%N
正确答案:
D
33、最适合用做链队列的不带表头节点的链表是_______。
A.带首节点指针和尾节点指针的循环单链表
B.只带尾节点指针的非循环单链表
C.只带尾节点指针的循环单链表
D.只带首节点指针的非循环单链表
正确答案:
C
34、假设用一个不带表头节点的单链表表示队列,在进行删除操作时,_______。
A.仅修改尾指针
B.仅修改头指针
C.头、尾指针可能都要修改
D.头、尾指针都要修改
正确答案:
C
35、假设用一个不带头节点的单链表表示队列,队头和队尾指针分别为front和rear,则判断队空的条件是_______。
A.front==NULL
B.rear!
==NULL
C.front==rear
D.front!
==NULL
正确答案:
A
36、最不合适用做链队的不带头节点的链表是_______。
A.只带队首节点指针的循环双链表
B.以上都不合适
C.只带队首节点指针的非循环单链表
D.只带队尾节点指针的循环双链表
正确答案:
C
37、假设用qu[0..M]实现循环队列,f、r分别为队首元素的前一个位置和队尾位置。
若用“(r+1)%(M+1)==f”作为队满的标志,则_______。
A.队列中最多可以有M+1个元素
B.可用“f==r”作为队空的标志
C.可用“(f+1)%(M+1)==r”作为队空的标志
D.可用“f>r”作为队空的标志
正确答案:
B
38、若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别是0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是_______。
A.4和2
B.2和4
C.1和5
D.5和1
正确答案:
B
二、判断题
1、栈底元素是不能删除的元素。
(×)
2、顺序栈中元素值的大小是有序的。
(×)
3、n个元素依次进栈,它们的出栈顺序和进栈顺序一定正好相反。
(×)
4、栈顶元素和栈底有可能是同一元素。
(√)
5、若用s[0..m-1]表示顺序栈的存储空间,则对栈的进栈、出栈操作最多只能进行m次;(×)
6、栈是一种对进栈、出栈操作总次数做了限制的线性表。
(×)
7、栈是一种对进栈、出栈操作的次序做了限制的线性表。
(×)
8、对顺序栈进行进栈、出栈操作,不涉及元素的前、后移动问题。
(√)
9、空栈没有栈顶指针。
(×)
10、栈和队列都是限制存取端的。
(√)
11、队列是一种对进队、出队操作的次序做了限制的线性表。
(×)
12、若用“队首指针的值和队尾指针的值相等”作为循环顺序队为空的标识,则在设置一个空队列时,只需给队首指针和队尾指针赋同一个值,在顺序表地址范围内不管什么值都可以。
(√)