栈和队列 习题

来源:互联网 发布:淘宝货到付款卖家流程 编辑:程序博客网 时间:2024/06/05 19:41

3栈和队列

一、    单选题

1、栈的操作原则是()

A. 顺序进出     B。后进后出   C。后进先出   D。先进先出

2、若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为()

A.4     B。5   C。6    D。7

3、按字母a,b,c,d,e顺序入栈,则出栈的输出序列不可能是()

A.decba    B. dceab  C. abcde   D. edcba

4、判断一个顺序栈st(最多元素为StackSize)为栈满的条件是()

A.st.top!=StackSize    B. st.top!=0

C.st.top==-1            D. st.top==StackSize-1

5、在向顺序栈中压入元素时()

A.先存入元素,后移动栈顶指针   B。谁先谁后无关紧要

C.先移动栈顶指针,后压入元素   D. 同时进行

6、一个队列的入队序列是1,3,5,7,9,则出队的输出序列只能是()

A.9,7,5,3,1    B. 1,3,5,7,9

C.1,5,9,3,7    D. 9,5,1,7,3

7、判断一个顺序队列sq(最到元素为QueueSize)为空队列的条件是()

A.sq.rear==sq.front       B. sq.rear==0

C.sq.front==QueueSize     D.sq.rear==QueueSize+1

8、判断一个循环队列cq(最多元素为QueueSize)为满队列的条件是()

A.cq.rear==cq.front    B. cq.rear==QueueSize

C.(cq.rear+1)%QueueSize==cq.front

D.cq.rear%QueueSize+1==cq.front

9、若已知一个栈的入栈序列是1,2,…,n,其输出序列为p1,p2,…,pn,若p1=n,则pi为(  )

A  i        B  n-i           C n-i+1               D 不确定

二、填空题

1、假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为________。

2、假设S.data[0..maxsize-1]为一个顺序存储的栈,变量top指示栈顶元素的位置。能做进栈操作的条件是_________;如果把栈顶元素弹出到x中,需执行下列语句:___________。

3、设顺序栈存放在S.data[0..maxsize-1]中,栈底位置是maxsize-1,则栈空的条件是__________;栈满的条件是___________。

4、若循环队列数组data[0..m-1]存储元素值,用front和rear分别作为头、尾指针,则当前元素个数为_________。

5、栈和队列都是________结构;对于栈,只能在_______插入和删除元素;对于队列,只能在_______插入元素,在_______删除元素。

三、判断题

1、栈上一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构(    )

2、对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以说线性表。

3、栈和队列是一种非线性结构。

4、栈和队列的存储方式既可以说顺序方式,也可以是链式方式。

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

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

7、一个栈的输入序列是12345,则栈的输出序列不可能是12345。

四、解答题

1、如果编号为1,2,3的三辆列车进入一个栈式结构的站台,那么可能得到的三辆列车的出站序列有哪些?不可能出现的序列是什么?

2、假设输入栈的元素为a,b,c,在栈S的输出端得到一个输出序列为a,b,c,试写出在输入端所以可能的输入序列。

3、简述下面所给算法的功能是什么(假设栈元素为整数类型)。

(1)void ex31(SeqStack * S)

{  int A[80] , i , n;

n=0;

while(!empty(S))

{A[n]=pop(S);

  n++;}

for(i=0; i<n; i++)

push (S, A[i]);

}

(2)void ex32 (SeqStack *S, int c)

{SeqStack T;

int d;

  while (!StackEmpty(S))

{d=pop(S);

  if (d!=c)

     push(T,d);

}

While(!StackEmpty(T))

{d=pop(T);

  Push(S,d); }

}

4、写出下列程序段的输出结果(栈结点数据域为字符型char)。

  SeqStack S;

  char x, y;

  x=’c’;

  y=’k’;

  push(S,x);

  push(S,y);

  x=pop(S);

  push(S,’t’);

  push(S,x);

  x=pop(S);

  push(S,’s’);

  while (!StackEmpty(S))

  { y=pop(S);

putchar(y);

}

putchar(x);

…...

一、选择题

1-5CBBDC

6-10BACC

二、填空题

1bceda

2top<maxsize-1    x=s.data[top]

3top==maxsize  top==0

4(rear+m-front)%m

5、线性   栈顶   队尾  对头

三、判断题

1-5:ÖÖ´ÖÖ       6-7:´´

四、解答题

1、出站序列为:123; 132; 213; 231; 321

  不可能出现的序列为:312

2、输入序列: abc; acb; bac; cabcba

不可能的是bca

3、(1)将栈内容逆置

2)将栈中等于c的元素删除

4stack