第三章 栈和队列练习题
2013-04-25 17:35
155 查看
原文地址:第三章 栈和队列练习题作者:tanzj
1、顺序栈S,栈顶指针为top,则栈置空操作是____________.
2、设有一栈,结点结构为data | next栈顶指针为h.则执行*s结点入栈操作是________和__________.
3、栈是一种特殊的_________,又称为_________.
4、判定一个栈ST(最多元素为m0)为空的条件是
A、ST->top<>0 B、ST->top=0 C、ST->top<>m0 D、ST->top=m0
5、设输入序列为1,2,3,4,5借助一个栈不可能得到的输出序列是( )
A 、 1,2,3,4,5 B、5,4,3,2,1 C 、4,3,1,2,5 D、 1,3,2,5,4
6、顺序队列和循环队列的队满及队空判断条件是一样的( )
7、栈和队列都是线性表.( )
8、排序和查找是两种基本的数据结构.( )
9、队列是一种特殊的________,允许插入的一端称为_______,允许删除的一端称为______,所以队列又称为____________.
10、栈的两个重要应用是___________和_________.
11、栈和队列都是运算受到限制的特殊的线性表,栈和队列有何不同?
12、用数组A存放循环队列的元素值,若其头指针为front,尾指针为rear,则循环队列中当前元素个数为( ).
A、(rear-front+m)%m B 、 (rear-front+1)%m
C 、(rear-front-1+m)%m D 、 (rear-front)%m
13、设循环队列Q头指针为front,尾指针为rear,队列的最大容量为M,写出循环队列队满和队空的判定条件.
14、给出循环队列的入队和出队算法.
15、由于查找运算的主要操作是关键字的比较,所以,通常把查找过程中对关键字需要执行的_________作为衡量一个查找算法效率优劣的标准.
16、设计算法判断一个算术表达式的圆括号是否正确配对,(提示:对表达式进行扫描,凡遇'('就进栈,遇')'就退掉栈顶的')',表达式被扫描完毕,栈就为空.)
17、程序段的输出结果是_________(队列中的元素类型QElemType为char)。
void main( ){
Queue Q; Init Queue (Q);
Char x=’e’, y=’c’;
EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue(Q, y);
DeQueue (Q,x); EnQueue (Q,x);
DeQueue (Q,x); EnQueue (Q,’a’);
while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); };
Printf(x);
}
18、设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
①front=11,rear=19; ②front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?
19、设两个栈共享向量空间V(1:m),它们的栈底分别设在向量的两端,且进栈的每个元素只占一个分量,试写出这两个栈公用的栈操作算法pushi(i,x),popi(i),其中i为0或1,用以指示栈号
20、已知Ackerman函数的定义如下 :
akm(m,n)=n+1 当m=0时
akm(m-1,1) 当m< >0,n=0时
akm(m-1,akm(m,n-1)) 当m< >0,n<>0时
写出递归算法
21、设HS为一个链栈的栈顶指针,试写出退栈的算法,(回收被删除的结点)
22、中缀算术表达式3*(5+x)/y所对应的后缀算术表达式为________________.
23、设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序.
24、写出栈的顺序存储结构(即顺序栈)的类型定义.
25、写出队列的顺序存储结构(顺序队列)的类型定义.
26、假设表达式由单字母变量和双目运算符构成.试写一个算法,将一个通常书写正确的表达式转换为逆波兰式.
27、带有头结点的链队列q,队头指针front,队尾指针rear,则置空队的算法描述为:
q->front=malloc(sizeof(linklist));
________________ ;
________________ ;
28、顺序队的“假溢出”是怎样产生的?如何知道循环队列是空还是满?
29、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )
A、i B、n=i C、n-i+1 D、不确定
30、队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。( )
31、判定一个队列QU(最多元素为m0)为满队列的条件是( )
A、QU->rear - QU->front = = m0 B、QU->rear- QU->front -1= = m0
C、QU->front = =QU->rear D、QU->front = = QU->rear+1
32、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为
A、r-f; B、(n+f-r)% n; C、n+r-f; D、(n+r-f)% n
33、说明线性表、栈与队的异同点。
34、简述以下算法的功能(栈和队列的元素类型均为int)。
void algo3(Queue &Q){
Stack S; int d;
InitStack(S);
while(!QueueEmpty(Q)){
DeQueue (Q,d); Push(S,d);
};
while(!StackEmpty(S)){
Pop(S,d); EnQueue (Q,d);
}
}
35、向量、栈和队列都是 结构,可以在向量的 位置插入和删除元素;对于栈只能在 插入和删除元素;对于队列只能在 插入和 删除元素。
36、栈是一种特殊的线性表,允许插入和删除运算的一端称为 。不允许插入和删除运算的一端称为 。
37、 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
1、顺序栈S,栈顶指针为top,则栈置空操作是____________.
2、设有一栈,结点结构为data | next栈顶指针为h.则执行*s结点入栈操作是________和__________.
3、栈是一种特殊的_________,又称为_________.
4、判定一个栈ST(最多元素为m0)为空的条件是
A、ST->top<>0 B、ST->top=0 C、ST->top<>m0 D、ST->top=m0
5、设输入序列为1,2,3,4,5借助一个栈不可能得到的输出序列是( )
A 、 1,2,3,4,5 B、5,4,3,2,1 C 、4,3,1,2,5 D、 1,3,2,5,4
6、顺序队列和循环队列的队满及队空判断条件是一样的( )
7、栈和队列都是线性表.( )
8、排序和查找是两种基本的数据结构.( )
9、队列是一种特殊的________,允许插入的一端称为_______,允许删除的一端称为______,所以队列又称为____________.
10、栈的两个重要应用是___________和_________.
11、栈和队列都是运算受到限制的特殊的线性表,栈和队列有何不同?
12、用数组A存放循环队列的元素值,若其头指针为front,尾指针为rear,则循环队列中当前元素个数为( ).
A、(rear-front+m)%m B 、 (rear-front+1)%m
C 、(rear-front-1+m)%m D 、 (rear-front)%m
13、设循环队列Q头指针为front,尾指针为rear,队列的最大容量为M,写出循环队列队满和队空的判定条件.
14、给出循环队列的入队和出队算法.
15、由于查找运算的主要操作是关键字的比较,所以,通常把查找过程中对关键字需要执行的_________作为衡量一个查找算法效率优劣的标准.
16、设计算法判断一个算术表达式的圆括号是否正确配对,(提示:对表达式进行扫描,凡遇'('就进栈,遇')'就退掉栈顶的')',表达式被扫描完毕,栈就为空.)
17、程序段的输出结果是_________(队列中的元素类型QElemType为char)。
void main( ){
Queue Q; Init Queue (Q);
Char x=’e’, y=’c’;
EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue(Q, y);
DeQueue (Q,x); EnQueue (Q,x);
DeQueue (Q,x); EnQueue (Q,’a’);
while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); };
Printf(x);
}
18、设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
①front=11,rear=19; ②front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?
19、设两个栈共享向量空间V(1:m),它们的栈底分别设在向量的两端,且进栈的每个元素只占一个分量,试写出这两个栈公用的栈操作算法pushi(i,x),popi(i),其中i为0或1,用以指示栈号
20、已知Ackerman函数的定义如下 :
akm(m,n)=n+1 当m=0时
akm(m-1,1) 当m< >0,n=0时
akm(m-1,akm(m,n-1)) 当m< >0,n<>0时
写出递归算法
21、设HS为一个链栈的栈顶指针,试写出退栈的算法,(回收被删除的结点)
22、中缀算术表达式3*(5+x)/y所对应的后缀算术表达式为________________.
23、设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序.
24、写出栈的顺序存储结构(即顺序栈)的类型定义.
25、写出队列的顺序存储结构(顺序队列)的类型定义.
26、假设表达式由单字母变量和双目运算符构成.试写一个算法,将一个通常书写正确的表达式转换为逆波兰式.
27、带有头结点的链队列q,队头指针front,队尾指针rear,则置空队的算法描述为:
q->front=malloc(sizeof(linklist));
________________ ;
________________ ;
28、顺序队的“假溢出”是怎样产生的?如何知道循环队列是空还是满?
29、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )
A、i B、n=i C、n-i+1 D、不确定
30、队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。( )
31、判定一个队列QU(最多元素为m0)为满队列的条件是( )
A、QU->rear - QU->front = = m0 B、QU->rear- QU->front -1= = m0
C、QU->front = =QU->rear D、QU->front = = QU->rear+1
32、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为
A、r-f; B、(n+f-r)% n; C、n+r-f; D、(n+r-f)% n
33、说明线性表、栈与队的异同点。
34、简述以下算法的功能(栈和队列的元素类型均为int)。
void algo3(Queue &Q){
Stack S; int d;
InitStack(S);
while(!QueueEmpty(Q)){
DeQueue (Q,d); Push(S,d);
};
while(!StackEmpty(S)){
Pop(S,d); EnQueue (Q,d);
}
}
35、向量、栈和队列都是 结构,可以在向量的 位置插入和删除元素;对于栈只能在 插入和删除元素;对于队列只能在 插入和 删除元素。
36、栈是一种特殊的线性表,允许插入和删除运算的一端称为 。不允许插入和删除运算的一端称为 。
37、 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
相关文章推荐
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 4:双端队列
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 2:栈的基本操作
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 8:抓住那头牛
- 《数据结构》第三章 栈和队列学习指南
- 数据结构 第三章 栈和队列
- 第三章 栈和队列
- 第三章 栈和队列知识结构
- 第三章-队列(1)
- Java疯狂讲义第三章练习题
- 指南 第三章 例题3 UVALive 3135 Argus(优先队列的应用)
- 第三章栈和队列结构导图
- 第三章 栈和队列
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列01 顺序栈操作
- 深入理解计算机系统 - 练习题 - 第三章 (练习题3.32)
- 数据结构(C语言版)---第三章栈和队列 3.2.4 迷宫求解
- 第三章 表,栈和队列
- 第三章练习题
- 《数据结构与算法分析:C语言描述》复习——第三章“线性表、栈和队列”——双向链表
- 第三章 栈与队列
- 《数据结构》第三章 栈和队列教学设计