数据结构习题精编栈和队列Word格式.docx

上传人:b****3 文档编号:13895851 上传时间:2022-10-14 格式:DOCX 页数:23 大小:27.86KB
下载 相关 举报
数据结构习题精编栈和队列Word格式.docx_第1页
第1页 / 共23页
数据结构习题精编栈和队列Word格式.docx_第2页
第2页 / 共23页
数据结构习题精编栈和队列Word格式.docx_第3页
第3页 / 共23页
数据结构习题精编栈和队列Word格式.docx_第4页
第4页 / 共23页
数据结构习题精编栈和队列Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据结构习题精编栈和队列Word格式.docx

《数据结构习题精编栈和队列Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构习题精编栈和队列Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

数据结构习题精编栈和队列Word格式.docx

缓冲区的逻辑结构应该是

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是

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1