栈和队列_习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章栈和队列
一、单项选择题
1.当利用大小为N的数组顺序存储一个栈时,假定用top=N表示栈空,则向这个栈入栈时,首先应执行( )语句修改top指针。
A. top++
B. top--
C. top=0
D. top=N-1
2.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top= -1表示栈空,并已知栈未满,当元素X入栈时执行的操作为( )。
A. a[--top]=X
B. a[top--]=X
C. a[++top]=X
D. a[top++]=X
3.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top=-1表示栈空,并已知栈未空,当退栈并返回栈顶元素执行的操作为( )。
A. return a[--top]
B. return a[top--]
C. return a[++top]
D. return a[top++]
4.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当p所指向的结点进栈时,执行的操作为()
A. p->next=top;top=top->next
B. top=p;p->next=top
C. p->next=top->next
D. p->next=top;top=p
5.假定一个链栈的栈顶指针用top表示,每个节点的结构为data域和next指针域,当执行退栈时,执行的操作为()
A. top->next=top
B. top=top->data
C. top=top->next
D. top->next=top->next->next
6.若让元素1,2,3,4依次进栈,则出栈次序不可能出现( )种情况。
A.3,2,1,4
B.2,1,4,3
C.4,3,2,1
D.1,4,2,3
7. 在一个循环队列中,队首指针指向队首元素的( )位置。
A. 前一个
B. 后一个
C. 当前
D. 最后
7. 在一个链队中,假设f与r分别为队首和队尾指针,则插入s所指结点的运算时( )
A.f->next=s;f=s
B.r->next=s;r=s
C.s->next=r;r=s
D.s->next=f;f=s
8. 假定利用数组a[N]循环顺序存储一个队列,用f和r分别表示队首和队尾指针,并已知队未满,当元素X入队时执行的操作为( )。
A. a[++r%N]=X
B. a[r++%N]=X
C. a[--r%N]=X
D. a[r--%N]=X
9. 假定利用数组a[N]循环顺序存储一个队列,用f和r分别表示队首和队尾指针,并已知队未空,当进行出队时执行的操作为( )。
A. return a[++r%N]=X
B. return a[r++%N]=X
C. return a[--r%N]=X
D. return a[r--%N]=X
10. 判断一个队列QU(最多元素为MaxSize)为满队列的条件是( )
A. QU->rear-QU->front==MaxSize
B. QU->rear-QU->front-1==MaxSize
C. QU->rear==QU->front
D. D.QU->front==QU->rear
11. 循环队列中是否可以插入下一个元素,( )
A. 与队头指针和队尾指针的值有关
B. 只与队尾指针的值有关,与队头指针的值无关
C. 只与数组大小有关,与队首指针和队尾指针的值无关
D.与曾经进行过多少次插入操作有关
12.栈和队列的共同点是( )
A.都是先进后出
B.都是先进先出
C.只允许在端点处插入和删除元素
D.没有共同点
二、填空题
1.在一个用一维数组a[N]表示的顺序栈中,该栈所含元素的个数最少为________个,最多为_________个。
2.向一个顺序栈中插入一个元素时,首先使_______后移一个位置,然后把新元素____到这个位置上.
3.从一个顺序栈删除元素时,首先取出______,然后再使______减1。
4.一个顺序循环队列存在于a[M]中,假定队首队尾指针分别为front和rear,则判断队空的条件为_________,判断队满的条件为____________。
5.一个顺序循环队列存在于a[M]中,则求出队首和队尾指针的下一个位置的计算公式分别为__________和______________.
6.设元素1,2,3,4,5依次进栈,若要在输出端得到序列34251,则应进行的操作序列为push(S,1), push(S,2),_________,pop(S), push(S,4),pop(S),________,_________, pop(S), pop(S).
三、简答题
1.何为队列的上溢现象?何为假溢出现象?有哪些解决办法?并分别描述其工作原理?2.对于一个栈,给出输入项A,B,C,如果输入队列由A,B,C组成,试给出全部可能的输出序列。
四、算法分析题
1.跟踪以下代码,显示每次调用后队列中的内容。
InitQueue(qu);
EnQueue(qu,’A’);
EnQueue(qu,’B’);
EnQueue(qu,’C’);
DeQueue(qu,x);
DeQueue(qu,x);
EnQueue(qu,’D’);
EnQueue(qu,’E’);
EnQueue(qu,’F’);
DeQueue(qu,x);
EnQueue(qu,’G’);
DeQueue(qu,x);
DeQueue(qu,x);
DeQueue(qu,x);
五、算法设计题
1.编写一个算法,利用栈的基本运算将指定栈中的内容进行逆转。
2.编写一个算法,利用队列的基本运算返回指定队列中的最后一个元素。