数据结构第3章 栈与队列习题 联系客服

发布时间 : 星期一 文章数据结构第3章 栈与队列习题更新完毕开始阅读1bc4dffd58f5f61fb736666d

第3章 栈与队列

一、单项选择题

1.元素A、B、C、D依次进顺序栈后,栈顶元素是 ,栈底元素是 。 A.A B.B C.C

D.D

2.经过以下栈运算后,x的值是 。

InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x); A.a C.1

B.b D.0

3.已知一个栈的进栈序列是ABC,出栈序列为CBA,经过的栈操作是 。 A.push,pop,push,pop,push,pop C.push,push,pop,pop,push,pop

B.push,push,push,pop,pop,pop D.push,pop,push,push,pop,pop

4.设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的序列是 。 A.A,B,C,D

B.D,C,B,A

C.A,C,D,B D.D,A,B,C

5.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是 。 A.edcba C.dceab

B.decba D.abcde

6.已知一个栈的进栈序列是1,2,3,……,n,其输出序列的第一个元素是i,则第j个出栈元素是 。 A.i C.j-i+1

B.n-i D.不确定

7.已知一个栈的进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,Pn,若p1=n,则pi的值 。 A.i C.n-i+1

B.n-i D.不确定

8.设n个元素进栈序列是1,2,3,……,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值 。 A.一定是2

B.一定是1

C.不可能是1 D.以上都不对

9.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=1,则p1的值 。 A.可能是2 C.不可能是2

B.一定是1 D.不可能是3

10.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若p3=3,则p1的值 。 A.可能是2 C.不可能是1

B.一定是2 D.一定是1

11.设n个元素进栈序列是p1,p2,…,pn,其输出序列是1,2,3,……,n,若pn=1,则pi(1≤i≤n-1)的值 。

A.n-i+1 B.n-i C.i

D.有多种可能

12.判定一个顺序栈S为空的条件为 。 A.S.top= =S.base

C.S.top!= S.base+S.stacksize A.S.top-S.base= =S.stacksize C.S.top-S.base!=S.stacksize

B.S.top!= S.base

D.S.top= = S.base+S.stacksize B.S.top= = S.base D.S.top!= S.base

13.判定一个顺序栈S为栈满的条件是 。

14.链栈与顺序栈相比有一个明显的优点,即 。 A.插入操作方便 C.不会出现栈空的情况

B.通常不会出现栈满的情况 D.删除操作更加方便

15.最不适合用作链栈的链表是 。 A.只有表头指针没有表尾指针的循环双链表 B.只有表尾指针没有表头指针的循环双链表 C.只有表尾指针没有表头指针的循环单链表 D.只有表头指针没有表尾指针的循环单链表

16.如果以链表作为栈的存储结构,则退链栈操作时 。 A.必须判别链栈是否满 C.必须判别链栈是否空

B.判别链栈元素的类型 D.对链栈不作任何判别

17.向一个不带头结点的栈顶指针为1st的链栈中插入一个s所指结点时,则执行 。 A.1st->next=s; C.s->next=1st;1st=s;

B.s->next=1st->next;1st->next=s; D.s->next=1st;1st->next;

18.从一个不带头结点的栈顶指针为S的链栈中删除一个结点时,用x保存被删除结点的值,则执行 。 A.x=S; S = S ->next; C.S = S ->next;x= S ->data;

B.x= S ->data;

D.x= S ->data; S = S ->next;

19.经过以下队列运算后,队头的元素是 。

InitQueue(qu);enQueue(qu,a);enQueue(qu,b);enQueue(qu,c);deQueue(qu); A.a

C.1

B.b D.0

20.经过以下队列的运算后,QueueEmpty(q) 的值是 。 InitQueue(qu);enQueue(qu,a);enQueue(qu,b);deQueue(qu,x);deQueue(qu,y); A.a C.1

B.b D.0

21.元素A,B,C,D顺序连续进入队列qu后,队头元素是 ,队尾元素是 。 A.A C.C

B.B D.D

22.一个队列的入队序列为1,2,3,4,则队列可能的输出序列是_______. A.4,3,2,1

B.1,2,3,4

C.1,4,3,2 D.3,2,4,1

二、填空题

1.栈是一种具有 特性的线性表。 2.顺序栈和链栈的区别仅在于 不同。

3.如果栈的最大长度难以估计,则最好使用 。

4.一个栈的输入序列是1,2,3,4,5,则栈的输出序列1,2,3,4,5是 。 5.若用不带头结点的单链表来表示链栈S,则创建一个空栈所要执行的操作

是 。

6.对于链栈S,进栈操作在 端进行,出栈操作在 端进行。 7.队列是一种具有 特性的线性表。

8.顺序队列和链队列的区别仅在于 的不同。 9.如果队列的最大长度难以估计,则最好使用__________。

三、判断题

1.顺序栈中元素值的大小是有序的。

2.在n个元素进栈后,它们的出栈顺序和进栈顺序一定正好相反。 3.栈顶元素和栈底元素有可能是同一个元素。

4.若用S[1~m]表示顺序栈的存储空间,则对栈的进栈,出栈操作最多只能进行m次。

5.栈是一种对进栈,出栈操作总次数作了限制的线性表。 6.空栈没有栈顶指针。

7.栈和队列都是限制存取端的线性表。

8.队列是一种对进队列,出队列操作的次序作了限制的线性表。 9.n个元素进队列的顺序和出队列的顺序总是一致的。

10.顺序队中有多少元素,可以根据队首指针的值和队尾指针的值来计算。 11.若用“队头指针的值和队尾指针的值相等”作为环形顺序队为空的标志,则在

设臵一个空队列时,只需给队头指针和队尾指针赋同一个值,不管什么值都可以。

12.无论是顺序队列,还是链队列,入队和出队操作的时间复杂度都是O(1)。 13.队列的输入序列为1,2,3,…,n,输出序列为a1,a2,…,an, 则ai

四、简答题

1.有5个元素,其进栈次序为A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?

2.设输入元素为1,2,3,P和A,入栈次序为1,2,3,P,A,元素经过栈后到达输出序列,当所有元素均到达输出序列后,有哪些序列可以作为高级语言的变量名?

3.设有一个数列的输入顺序为1,2,3,4,5,6,若采用栈结构,并以A和D分别表

示进栈和出栈操作,试问通过进栈和出栈操作的合法序列是什么? (1)能否得到输出顺序为3,2,5,6,4,1的序列。 (2)能否得到输出顺序为1,5,4,6,2,3的序列。 4.简述线性表、栈和队列的异同。

5.设栈S和队列Q的初始状态都为空,元素a,b,c,d,e和f依次通过栈S,一个元素出栈后即进入队列Q,若6个元素的出队的序列是b,d,c,f,e,a,则栈S的容量至少应该存多少个元素。

五、算法设计题

1.用一个一维数组S(设大小为MaxSize)作为两个栈的共享空间。请说明共享方法,栈满和栈空的判断条件,并用C/C++语言设计公用的初始化栈运算InitStack1(st)、判栈空运算StackEmpty1(st,i)、入栈运算Push(st,i,x)和出栈运算Pop(st,i,x),其中i为1或2,用于表示栈好,x为入栈或出栈元素。 2.设计一个算法,利用栈的InitStack( )、Push( )、Pop( )和StackEmpty( )等基本运算返回指定栈中栈底元素。

3.用不带头结点的单链表存储链栈,设计初始化栈、判断栈是否为空、进栈和出栈相应的算法。

4.在栈顶头结点为1st的链栈中,设计一个算法计算该栈中结点个数。