试题3.docx

上传人:b****8 文档编号:10739759 上传时间:2023-02-22 格式:DOCX 页数:25 大小:33.90KB
下载 相关 举报
试题3.docx_第1页
第1页 / 共25页
试题3.docx_第2页
第2页 / 共25页
试题3.docx_第3页
第3页 / 共25页
试题3.docx_第4页
第4页 / 共25页
试题3.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

试题3.docx

《试题3.docx》由会员分享,可在线阅读,更多相关《试题3.docx(25页珍藏版)》请在冰豆网上搜索。

试题3.docx

试题3

第3章栈和队列

一选择题

1.对于栈操作数据的原则是()。

【青岛大学2001五、2(2分)】

A.先进先出B.后进先出C.后进后出D.不分顺序

2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。

当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的(④)分别设在这片内存空间的两端,这样,当(⑤)时,才产生上溢。

①,②:

A.空B.满C.上溢D.下溢

③:

A.n-1B.nC.n+1D.n/2

④:

A.长度B.深度C.栈顶D.栈底

⑤:

A.两个栈的栈顶同时到达栈空间的中心点.

B.其中一个栈的栈顶到达栈空间的中心点.

C.两个栈的栈顶在栈空间的某一位置相遇.

D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.

【上海海运学院1997二、1(5分)】【上海海运学院1999二、1(5分)】

3.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

A.不确定B.n-i+1C.iD.n-i

【中山大学1999一、9(1分)】

4.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。

A.i-j-1B.i-jC.j-i+1D.不确定的

【武汉大学2000二、3】

5.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是()。

A.iB.n-iC.n-i+1D.不确定

【南京理工大学2001一、1(1.5分)】

6.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?

()

A.543612B.453126C.346521D.234156

【北方交通大学2001一、3(2分)】

7.设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。

【中科院计算所2000一、10(2分)】

A.1,2,4,3,B.2,1,3,4,C.1,4,3,2,

D.4,3,1,2,E.3,2,1,4,

8.一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是()。

A.23415B.54132C.23145D.15432

【南开大学2000一、1】【山东大学2001二、4(1分)】【北京理工大学2000一、2(2分)】

9.设一个栈的输入序列是1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。

A.51234B.45132C.43125D.32154

【合肥工业大学2001一、1(2分)】

10.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

【北京航空航天大学2000一、3(2分)】【北京邮电大学1999一、3(2分)】

11.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

【南京理工大学1996一、9(2分)】

12.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是()。

A.XYZB.YZXC.ZXYD.ZYX

【南京理工大学1997一、5(2分)】

13.输入序列为ABC,可以变为CBA时,经过的栈操作为()【中山大学1999一、8(1分)】

A.push,pop,push,pop,push,popB.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop

14.若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是()。

A.top:

=top+1;V[top]:

=xB.V[top]:

=x;top:

=top+1

C.top:

=top-1;V[top]:

=xD.V[top]:

=x;top:

=top-1

【南京理工大学1998一、13(2分)】

15.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0B.top[1]+1=top[2]C.top[1]+top[2]=mD.top[1]=top[2]

【南京理工大学1999一、14(1分)】

16.栈在()中应用。

【中山大学1998二、3(2分)】

A.递归调用B.子程序调用C.表达式求值D.A,B,C

17.一个递归算法必须包括()。

【武汉大学2000二、2】

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

18.执行完下列语句段后,i值为:

()【浙江大学2000一、6(3分)】

intf(intx)

{return((x>0)?

x*f(x-1):

2);}

inti;

i=f(f

(1));

A.2B.4C.8D.无限递归

19.表达式a*(b+c)-d的后缀表达式是()。

【南京理工大学2001一、2(1.5分)】

A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd

20.表达式3*2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算符栈为(),其中^为乘幂。

A.3,2,4,1,1;(*^(+*-B.3,2,8;(*^-C.3,2,4,2,2;(*^(-D.3,2,8;(*^(-

【青岛大学2000五、5(2分)】

21.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈

【西安电子科技大学1996一、6(2分)】

22.用链接方式存储的队列,在进行删除运算时()。

【北方交通大学2001一、12(2分)】

A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改

23.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

【北京理工大学2001六、3(2分)】

A.仅修改队头指针B.仅修改队尾指针

C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

24.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A.队列B.多维数组C.栈D.线性表

【福州大学1998一、1(2分)】

25.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

【北京工商大学2001一、2(3分)】

A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m

26.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。

【南京理工大学2001一、5(1.5分)】

A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front

27.循环队列存储在数组A[0..m]中,则入队时的操作为()。

【中山大学1999一、6(1分)】

A.rear=rear+1B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)

28.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?

()【浙江大学1999四、1(4分)】

A.1和5B.2和4C.4和2D.5和1

29.已知输入序列为abcd经过输出受限的双向队列后能得到的输出序列有()。

A.dacbB.cadbC.dbcaD.bdacE.以上答案都不对

【西安交通大学1996三、3(3分)】

30.若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列是()。

【西安电子科技大学1996一、5(2分)】

A.1234B.4132C.4231D.4213

31.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)MODn=frontB.rear=front

C.rear+1=frontD.(rear-l)MODn=front

【南京理工大学1999一、16(2分)】

32.栈和队列的共同点是()。

【燕山大学2001一、1(2分)】

A.都是先进先出B.都是先进后出

C.只允许在端点处插入和删除元素D.没有共同点

33.栈的特点是(①),队列的特点是(②),栈和队列都是(③)。

若进栈序列为1,2,3,4则(④)不可能是一个出栈序列(不一定全部进栈后再出栈);若进队列的序列为1,2,3,4则(⑤)是一个出队列序列。

【北方交通大学1999一、1(5分)】

①,②:

A.先进先出B.后进先出C.进优于出D.出优于进

③:

A.顺序存储的线性结构B.链式存储的线性结构

C.限制存取点的线性结构D.限制存取点的非线性结构

④,⑤:

A.3,2,1,4B.3,2,4,1C.4,2,3,1D.4,3,2,1F.1,2,3,4G.1,3,2,4

34.栈和队都是()【南京理工大学1997一、3(2分)】

A.顺序存储的线性结构B.链式存储的非线性结构

C.限制存取点的线性结构D.限制存取点的非线性结构

35.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是()。

A.6B.4C.3D.2

【南京理工大学2000一、6(1.5分)】

36.用单链表表示的链式队列的队头在链表的()位置。

【清华大学1998一、1(2分)】

A.链头B.链尾C.链中

37.依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?

【哈尔滨工业大学2000七(8分)】

A.{d,e,c,f,b,g,a}B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}D.{c,d,b,e,f,a,g}

二判断题

1.消除递归不一定需要使用栈,此说法()

【中科院计算所1998二、2(2分)】【中国科技大学1998二、2(2分)】

2.栈是实现过程和函数等子程序所必需的结构。

()【合肥工业大学2000二、2(1分)】

3.两个栈共用静态存储空间,对头使用也存在空间溢出问题。

()【青岛大学2000四、2(1分)】

4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

()【上海海运学院1998一、4(1分)】

5.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。

()【北京邮电大学1999二、4(2分)】

6.有n个数顺序(依次)进栈,出栈序列有Cn种,Cn=[1/(n+1)]*(2n)!

/[(n!

)*(n!

)]。

()

【北京邮电大学1998一、3(2分)】

7.栈与队列是一种特殊操作的线性表。

()【青岛大学2001四、3(1分)】

8.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1.()

【上海海运学院1995一、2(1分)1997一、3(1分)】

9.栈和队列都是限制存取点的线性结构。

()【中科院软件所1999六、(5)(2分)】

10.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列1,5,4,6,2,3。

()

【上海海运学院1999一、3(1分)】

11.任何一个递归过程都可以转换成非递归过程。

(  )【上海交通大学1998一、3(1分)】

12.只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。

(  )

【上海交通大学1998一、4(1分)】

13.队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

()

【上海海运学院1998一、3(1分)】

14.通常使用队列来处理函数或过程的调用。

()【南京航空航天大学1997一、5(1分)】

15.队列逻辑上是一个下端和上端既能增加又能减少的线性表。

()【上海交通大学1998一、2】

16.循环队列通常用指针来实现队列的头尾相接。

()【南京航空航天大学1996六、1(1分)】

17.循环队列也存在空间溢出问题。

()【青岛大学2002一、2(1分)】

18.队列和栈都是运算受限的线性表,只允许在表的两端进行运算。

()【长沙铁道学院1997一、5(1分)】

19.栈和队列都是线性表,只是在插入和删除时受到了一些限制。

()【北京邮电大学2002一、3(1分)】

20.栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。

()

【上海海运学院1996一、2(1分)1999一、2(1分)】

三填空题

1.栈是_______的线性表,其运算遵循_______的原则。

【北京科技大学1997一、3】

2._______是限定仅在表尾进行插入或删除操作的线性表。

【燕山大学1998一、3(1分)】

3.一个栈的输入序列是:

1,2,3则不可能的栈输出序列是_______。

【中国人民大学2001一、1(2分)】

4.设有一个空栈,栈顶指针为1000H(十六进制),现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,输出序列是_______,而栈顶指针值是_______H。

设栈为顺序栈,每个元素占4个字节。

【西安电子科技大学1998二、1(4分)】

5.当两个栈共享一存储区时,栈利用一维数组stack(1,n)表示,两栈顶指针为top[1]与top[2],则当栈1空时,top[1]为_______,栈2空时,top[2]为_______,栈满时为_______。

【南京理工大学1997三、1(3分)】

6.两个栈共享空间时栈满的条件_______。

【中山大学1998一、3(1分)】

7.在作进栈运算时应先判别栈是否_

(1)_;在作退栈运算时应先判别栈是否_

(2)_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)_。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应将两栈的_(4)_分别设在内存空间的两端,这样只有当_(5)_时才产生溢出。

【山东工业大学1994一、1(5分)】

8.多个栈共存时,最好用_______作为存储结构。

【南京理工大学2001二、7(2分)】

9.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_______。

【西南交通大学2000一、5】

10.顺序栈用data[1..n]存储数据,栈顶指针是top,则值为x的元素入栈的操作是_______。

【合肥工业大学2001三、2(2分)】

11.表达式23+((12*3-2)/4+34*5/7)+108/9的后缀表达式是_______。

【中山大学1998一、4(1分)】

12.循环队列的引入,目的是为了克服_______。

【厦门大学2001一、1(14/8分)】

13.用下标0开始的N元数组实现循环队列时,为实现下标变量M加1后在数组有效下标范围内循环,可采用的表达式是:

M:

=_______(填PASCAL语言,C语言的考生不填);M=_______(填C语言,PASCAL语言的考生不填)。

【西南交通大学2000一、7】

14.________又称作先进先出表。

【重庆大学2000一、7】

15.队列的特点是_______。

【北京理工大学2000二、2(2分)】

16.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_______。

【北方交通大学2001二、5】

17.已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是_______。

【合肥工业大学2000三、3(2分)】

18.区分循环队列的满与空,只有两种方法,它们是______和______。

【北京邮电大学2001二、2(4分)】

19.设循环队列用数组A[1..M]表示,队首、队尾指针分别是FRONT和TAIL,判定队满的条件为_______。

【山东工业大学1995一、1(1分)】

20.设循环队列存放在向量sq.data[0:

M]中,则队头指针sq.front在循环意义下的出队操作可表示为_______,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sq.rear),则队满的条件为_______。

【长沙铁道学院1997二、4(4分)】

21.表达式求值是_______应用的一个典型例子。

【重庆大学2000一、10】

22.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列的元素个数是_______。

【厦门大学2000六、1(16%/3分)】

23.设Q[0..N-1]为循环队列,其头、尾指针分别为P和R,则队Q中当前所含元素个数为_______。

【北京科技大学1997一、4】

24.完善下面算法。

【中山大学1998四、2(6分)】

后缀表达式求值,表达式13/25+61的后缀表达式格式为:

13,25/61,+

FUNCcompute(a):

real;后缀表达式存储在数组a[1..m]中。

BEGIN

setnull(s);i:

=1;ch:

=

(1)______;

WHILEch<>’@’DO

BEGIN

CASEchOF

‘0’..‘9’:

x:

=0;

WHILEch<>’,’DO

BEGIN

x:

=x*10+ord(ch)-ord(‘0’);

i:

=i+1;ch:

=

(2)_______;

END

‘+’:

x:

=pop(s)+pop(s);

‘-‘:

x:

=pop(s);x:

=pop(s)-x;

‘*’:

x:

=pop(s)*pop(s);

‘/’:

x:

=pop(s);x:

=pop(s)/x;

ENDCASE

push(s,x);i:

=i+1;ch:

=a[i];

END;

comput:

=(3)_______;

END;

25.算术表达式求值的流程,其中OPTR为算术符栈,OPND为操作数栈,precede(oper1,oper2)是比较运算符优先级别的函数,operate(opnd1,oper,opnd2)为两操作数的运算结果函数。

(#表示运算起始和终止符号)【西北工业大学1999六、2(7分)】

FUNCTIONexp_reduced:

operandtype;

INITSTACK(OPTR);PUSH(OPTR"#");INITSTACK(OPND);read(w);

WHILENOT((w='#’)AND(GETTOP(OPTR)='#'))DO

IFNOTwinopTHENPUSH(OPND,w);

ELSECASEprecede(GETTOP(OPTR),w)OF

'<':

[

(1)_______;read(w);]

'=':

[

(2)_______;read(w);];

'>':

[theta:

=POP(OPTR);b:

=POP(OPND);a:

=POP(OPND);(3)_______;]

ENDC;

RETURN(GETTOP(OPND));

ENDF;

26.根据需要,用适当的语句填入下面算法的_______中:

问题:

设有n件物品,重量分别为w1,w2,w3,…,wn和一个能装载总重量为T的背包。

能否从n件物品中选择若干件恰好使它们的重量之和等于T。

若能,则背包问题有解,否则无解。

解此问题的算法如下:

FUNCTIONkanp_stack(VARstack,w:

ARRAY[1..n]OFreal;VARtop:

integer;T:

real):

boolean;

{w[1:

n]存放n件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不超过T,则装入,否则弃之,取下一个物品试之。

若有解则返回函数值true,否则返回false}

BEGIN

top:

=0;i:

=1;{i指示待选物品}

WHILE

(1)_______AND

(2)_______DO

[IF(3)______OR(4)_______AND(i

THEN[top:

=(5)_______;stack[top]:

=i;{第i件物品装入背包}

T:

=T-w[i]];

IFT=0THENRETURN((6)_______){背包问题有解}

ELSE[IF(i=n)AND(top>0)

THEN[i:

=(7)_______;{取出栈顶物品}

top:

=(8)_______;T:

=(9)_______];{恢复T值}

i:

=i+1{准备挑选下一件物品}

];

];

RETURN((10)_______){背包无解}

END;

【北京邮电大学1996四(10分)】

四应用题

1.名词解释:

栈。

【燕山大学1999一、1(2分)】【吉林工业大学1999一、3(2分)】

2.名词解释:

队列【大连海事大学1996一、6

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

当前位置:首页 > 解决方案 > 学习计划

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

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