数据结构习题精编栈和队列.docx
- 文档编号:974740
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:23
- 大小:27.86KB
数据结构习题精编栈和队列.docx
《数据结构习题精编栈和队列.docx》由会员分享,可在线阅读,更多相关《数据结构习题精编栈和队列.docx(23页珍藏版)》请在冰豆网上搜索。
数据结构习题精编栈和队列
数据结构习题精编:
栈和队列
一、选择题
1.栈和队列都是
A.顺序存储的线性结构B.链式存储的非线性结构
C.限制存取点的线性结构D.限制存取点的非线性结构
2.栈和队列的主要区别是
A.逻辑结构不同B.存储结构不同
C.所包含的运算个数不同D.限定插入和删除的位置不同
3.递归过程或函数调用时,处理参数及返回地址要用到的数据结构是
A.栈B.队列C.树D.图
4.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主
机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该
缓冲区的逻辑结构应该是
A.栈B.队列C.树D.图
5.链栈与顺序栈相比,比较明显的优点是
A.插入操作更加方便B.删除操作更加方便
C.不会出现下溢的情况D.不会出现上溢的情况
6.导致栈上溢的操作是
A.栈满时执行的出栈B.栈满时执行的入栈
C.栈空时执行的出栈D.栈空时执行的入栈
7.若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作
系列是
A.SXSSXXXXB.SXXSXSSXC.SXSXXSSXD.SSSXXSXX
8.一个栈的输入序列为1、2、3、…、n,若输出序列的第一个元素是n,输出的
第i(1<=i<=n)个元素是
A.iB.n-iC.n-i+1D.不确定的
9.若已知一个栈的入栈序列是1、2、…、n,其输出序列为p1、p2、…、pN,若
pN是n,则pi是
A.iB.n-iC.n-i+1D.不确定的
10.若进栈序列为1、2、3、4、5、6,且进栈和出栈可以穿插进行,则不可能出现
的出栈序列是
A.2、4、3、1、5、6B.3、2、4、1、6、5
C.4、3、2、1、5、6D.2、3、5、1、6、4
11.若进栈序列为1、2、3、4、5、6,且进栈和出栈可以穿插进行,则可能出现的出
栈序列为
A.3、2、6、1、4、5B.3、4、2、1、6、5
C.1、2、5、3、4、6D.5、6、4、2、3、1
12.若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连
续三次进行退栈工作,则不可能得到的出栈序列是
A.dcebfaB.cbdaefC.bcaefdD.afedcb
13.设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。
若每个元素出
栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是
A.1B.2C.3D.4
14.元素a、b、c、d、e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直
到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是
A.3B.4C.5D.6
15.若一个栈以数组V[1..n]存储,初始栈顶指针top为n+1,则实现x进栈(假定x进
栈不会溢出)的正确操作是
A.V[++top]=x;B.V[top++]=x;C.V[--top]=x;D.V[top--]=x;
16.若栈采用顺序存储方式存储,现两个栈共享存储空间V[1..m],top[i]代表第i个栈
(i=1或2)的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是
A.top[1]==top[2]B.top[1]+1==top[2]
C.top[1]+top[2]==mD.top[2]-top[1]!
=0
17.表达式a*(b+c)-d的后缀表达式是
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
18.在表达式3*2^(4+2*2-6*3)-5(其中^为乘幂)求值过程中,当扫描到6时,操作数
栈和操作符栈分别为
A.3、2、8;#*^-B.3、2、4、1、1;#*^(+*-
C.3、2、8;#*^(-D.3、2、4、2、2;#*^(-
19.设数组A[m]为循环队列Q的存储空间,front为队头指针,rear为队尾指针,则
判定Q为空队列的条件是
A..front==rearB.(rear-front)%m==1
C.(rear-front)%m==m-1D.front==(rear+1)%m
20.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位
置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,
队列满的判定条件为
A.rear==frontB.(front+1)%n==rear
C.rear+1==frontD.(rear+1)%n==front
21.循环队列sq中,用数组elem[0..25]存放数据元素,sq.front指示队头元素的前一
个位置,sq.rear指示队尾元素的当前位置,设当前sq.front为20,sq.rear为12,则
当前队列中的元素个数为
A.8B.16C.17D.18
22.已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear
指向队尾元素的下一个位置,则向队列中插入新元素时,修改指针的操作是
A.rear=(rear-1)%m;B.front=(front+1)%m;
C.front=(front-1)%m;D.rear=(rear+1)%m;
23.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,
当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为
A.1和5B.2和4C.4和2D.5和1
24.设循环队列的元素存放在一维数组Q[0..30]中,队列非空时,front指示队头元
素的前一个位置,rear指示队尾元素。
如果队列中元素的个数为11,front的值
为25,则rear应指向的元素是
A.Q[4]B.Q[5]C.Q[14]D.Q[15]
25.已知循环队列存储在一维数组A[0..n-1]中,且队列非空时front和rear分别指向队
头元素和队尾元素。
若初始队列为空,且要求第1个进入队列的元素存储在A[0]
处,则初始时front和rear的值分别是
A.0,0B.0,n-1C.n-1,0D.n-1,n-1
二、填空题
1._______是限定仅在表尾进行插入或删除操作的线性表。
2.在栈结构中,允许插入的一端称为_________;在队列结构中,允许插入的一端称为_________。
3.一个栈的入栈序列是1、2、3,则不可能得到的出栈序列是_______。
4.假设元素按a、b、c、d的顺序依次进栈,进栈和出栈可以穿插进行,在得到的出栈序列中的第一个元素为c,则可能得到的出栈序列为________________。
5.设一个顺序栈S,元素s1、s2、s3、s4、s5、s6依次进栈,如果6个元素的出栈顺序为s2、s3、s4、s6、s5、s1,则顺序栈的容量至少为________。
6.当两个栈采用顺序存储方式存储,共享存储空间stack[1..n]表示,两栈顶指针为top[1]与top[2],则当栈1空时,top[1]为_______;栈2空时,top[2]为_______;栈满时为_______。
7.为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的存储空间时,应将两栈的___________分别设在存储空间的两端,这样进栈操作时只有当___________时才产生溢出。
8.在作进栈运算时应先判别栈是否_________,在作出栈运算时应先判别栈是否________;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为________。
9.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_______。
10.顺序栈用data[1..n]存储数据元素,栈顶指针是top,则值为x的元素入栈的操作是_______。
11.表达式a*b+c/d的后缀表达式是______________。
假设S和X分别表示进栈和出栈操作,由输入序列“ABC”得到输出序列“BCA”的操作序列为SSXSXX,则由表达式a*b+c/d得到其后缀表达式的的操作序列为___________________。
12.表达式a+((b*c-d)/e+f*g/h)+i/j的后缀表达式是____________________。
13.已知链队列的头尾指针分别是f和r,则将值为x的元素入队的操作序列是
s=newLinkList;s->data=x;_____________;_____________;_________;
14.区分循环队列的满与空,通常有两种方法,它们是_________和__________。
15.用下标从0开始的一维数组A[n]实现循环队列时,为保证下标变量m加1后在数组有效下标范围内循环,可采用的表达式是m=____________。
16.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列的元素个数是_______。
17.设循环队列的数据元素存放在一维数组data[0..M]中,队头指针为front,队尾指针为rear,若用牺牲一个单元的办法来区分队满和队空,则队空的条件为________________,对满的条件为________________________。
18.在循环队列中,存储空间为A[0~n-1],设队头指针front指向队头元素前一个空闲元素,队尾指针rear指向队尾元素,那么队空标志为________,队满标志为________________。
19.使用一个100个元素的数组存储循环队列,如果采取少用一个元素空间的方法来区别循环队列的队空和队满,约定队头指针front等于队尾指针rear时表示队空。
若为front=8,rear=7,则队列中的元素个数为________。
20.设Q是一个具有11个元素存储空间的循环队列(队尾指针rear指向队尾元素的下一个位置,队头指针front指向队头元素),初始状态Q.front=Q.rear=0;写出依次执行下列操作后头、尾指针的当前值。
(1)a、b、c、d、e、f入队,a、b、c、d出队后,Q.front=______,Q.rear=______。
(2)g、h、i、j、k、l入队,e、f、g、h出队后,Q.front=______,Q.rear=______。
(3)m、n、o、p入队,i、j、k、l、m出队后,Q.front=______,Q.rear=______。
三、解答题
1.设有编号为1、2、3、4的四辆列车,顺序进入一个栈式结构的车站,写出这四辆列车开出车站的所有可能的顺序。
2.假设以S和X分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S和X组成的序列表示(如SXSX为合法序列,SXXS为非法序列)。
(1)试指出判别给定操作序列是否合法的一般规则。
(2)两个不同的输入序列(对同一输入元素集)能否得到相同的输出元素序列?
如能得到,请举列说明。
3.设栈S1的入栈序列为1、2、3、4,则不可能得到出栈序列3、1、4、2。
但可通过增设栈S2来实现。
通过让入栈序列1、2、3、4依次经过栈S1和S2,可以得到序列3、1、4、2。
依次经过栈S1和S2的意思是从S1出栈的元素一定要进入S2。
例如,如果用H1和H2分别表示栈S1和S2的进栈操作,用P1和P2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 精编 队列
![提示](https://static.bdocx.com/images/bang_tan.gif)