计算机专业基础综合数据结构(栈和队列)历年真题试卷汇编6

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机专业基础综合数据结构(栈和队列)历年真题试卷汇编6

(总分:60.00,做题时间:90分钟)

一、单项选择题(总题数:14,分数:28.00)

1.为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。【2009年

全国试题1(2)分】

(分数:2.00)

A.栈

B.队列√

C.树

D.图

解析:

2.设栈S和队列Q的初始状态均为空,元素a,b,c,d,e,j,g=g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b,d,c,f,e,a,g,则栈S的容量至少是( )。【2009年全国试题2(2)分】

(分数:2.00)

A.1

B.2

C.3 √

D.4

解析:解析:按元素出队顺序计算栈的容量。b进栈时栈中有a,b出栈,cd进栈,栈中有acd,dc出栈,ef进栈,栈中有aef,fea出栈,栈空,g进栈后出栈。所以栈S的容量至少是3。

3.若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是( )。【2010年全国试题1(2)分】

(分数:2.00)

A.d,c,e,b,f,a

B.c,b,d,a,e,f

C.b,c,a,e,f,d

D.a,f,e,d,c,b √

解析:

4.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a,b,c,d,e依次入此队列后再进行出队操作,则不可能得到的出队序列是( )。【2010年全国试题2(2)分】

(分数:2.00)

A.b,a,c,d, e

B.d,b,a,c,e

C.d,b,c,a,e √

D.e,c,b,a,d

解析:解析:a先入队,b和c可在a的任一端入队,选项A、B、D都符合要求,只有选项C不可能出现。双端队列出队结果的分析可参见四、36。

5.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是( )。【2011年全国试题2(2)分】

(分数:2.00)

A.3

B.4 √

C.5

D.6

解析:解析:元素d进栈时,元素a,b,c已在栈中,d出栈后,P可以在a,b,c任一元素的前面进栈并出栈,也可以在元素a后出栈,c,b,a必须依次出栈,所以元素d开头的序列个数是4。

6.已知循环队列存储在一维数组A[0.n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第1个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是( )。[2011年全国试题3(2)分】

(分数:2.00)

A.0,0

B.0,n—1 √

C.n一1,0

D.n一1,n一1

解析:解析:队列的入队在队尾,答案中B和D入队(0一1)+1)%n的结果为0,因为要求第1个进入队列的元素存储在A[0]处,且front和rear分别指向队头元素和队尾元素,故选B。

7.已知操作符包括“+”,“-”,“/”,“(’和’)’。将中缀表达式a+b一a*((c+d)/e-f+g转换为等价的后缀表达式ab+acd+e/f*-g+时,用栈来存放暂时还不能确定运算次序的操作符。若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是( )。【2012年全国试题2(2)分】

(分数:2.00)

A.5 √

B.7

C.8

D.1 1

解析:

8.一个栈的入栈序列为1,2,3,…,n,其出栈序列是p 1,p 2,p 3,…,p n。若p 2 =3,则p 3可能取值的个数是( )。【2013年全国试题2(2)分】

(分数:2.00)

A.n一3

B.n一2

C.n一1 √

D.无法确定

解析:解析:1,2先于3已入栈,且其中有一个已出栈,另一个在3入栈并出栈后可立即出栈。从4到n,任何一个都可以入栈后立即出栈。因此,p3可能的取值有,1一1个,故选C。

9.假设栈初始为空,将中缀表达式a/b+(c*d-e*f)g转换为等价的后缀表达式的过程中,当扫描到f时,栈中的元素依次是( )。【2014年全国试题2(2)分】

(分数:2.00)

A.+(*一

B.+(一* √

C./+(*一*

D./+一*

解析:解析:求解过程请参见四、21。

10.循环队列存放在一维数组A[0.M-1]中,endl指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素,初始时为空。下列判断队空和队满的条件中,正确的是( )。【2014年全国试题3(2)分】

(分数:2.00)

A.队空:end1=end2;队满:end1=(end2+1)mod M √

B.队空:end1=end2;队满:end2=(end1+1)modM-1)

C.队空:end2=(end1+1)modM; 队满:end4=(end2+1)modM

D.队空:end1=(end2+1)modM;队满:end2=(endl+1)modM-1)

解析:

11.已知程序如下:int s(int n){ return(n’<=0)’0=s(n-1)+n; }void main(){ cout<

(分数:2.00)

相关文档
最新文档