当前位置:   article > 正文

数据结构——第三章 栈和队列_void main() { stack s ; char x ,y ; initstack(s);

void main() { stack s ; char x ,y ; initstack(s); x =’c’; y =’k’; push(s

一、单选题(共18题,55分) 


1、栈结构通常采用的两种存储结构是( )。 
A、 顺序存储结构和链表存储结构。 
B、 散列方式和索引方式。
C、 链表存储结构和数组。 
D、 线性链表结构和非线性存储结构。 
正确答案: A

这里就不解释了哈哈哈大家都懂


2、在栈操作中,输入序列为(A,B,C,D),不可能得到的输出的数列是( )。 
A、 (A,B,C,D) 
B、 (D,C,B,A) 
C、 (A,C,D,B) 
D、 (C,A,B,D) 
正确答案: D

每个都去尝试一下,你就会发现D是不可能的那个


3、设栈ST用顺序存储结构表示,则栈ST为空的条件是( )。 
A、 ST.top-ST.base<0 
B、 ST.top-ST.base==0 
C、 ST.top-ST.base<n 
D、 ST.top-ST.base==n 
正确答案: B


4、向一个栈顶指针为HS的链栈中插入一个s结点时,则执行( )。 
A、 HS->next=s; 
B、 s->next=HS->next; HS->next=s; 
C、 s->next=HS;HS=s; 
D、 s->next=HS;HS=HS->next; 
正确答案: C

 


5、从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删结点的值,则执行( )。 
A、 x=HS;HS=HS->next; 
B、 HS=HS->next; x=HS->data; 
C、 x=HS->data;HS=HS->next; 
D、 s->next=HS;HS=HS->next; 
正确答案: C

先把这个节点的值用x存起来,再把指针后面移动,就相当于删除了栈顶的那个元素了


6、表达式a*(b+c)-d的后缀表达式是( )。 
A、 abcdd+- 
B、 abc+*d- 
C、 abc*+d- 
D、 -+*abcd 
正确答案: B
 

7、中缀表达式A-(B+C/D)*E的后缀形式是( ) 
A、 AB-C+D/E* 
B、 ABC+D/E* 
C、 ABCD/E*+- 
D、 ABCD/+E*- 
正确答案: D
解析:无 

8、一个队列的入列序列是1,2,3,4,则队列的输出序列是( )。 
A、 4,3,2,1 
B、 1,2,3,4 
C、 1,4,3,2 
D、 3,2,4,1 
正确答案: B
解析:无 

9、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列Q为空的条件是( )。 
A、 Q.ear-Q.front==n 
B、 Q.rear-Q.front-1==n 
C、 Q.front==Q.rear 
D、 Q.front==Q.rear+1 
正确答案: C
解析:无 

10、循环队列SQ采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front和rear,则判定此循环队列Q为满队列的条件是( )。 
A、 Q.front==Q.rear 
B、 Q.front!=Q.rear 
C、 Q.front==(Q.rear+1)%n 
D、 Q.front!=(Q.rear+1)%n 
正确答案: C
解析:无 

11、若在一个大小为6的数组上实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。 
A、 1和5 
B、 2和4 
C、 4和2 
D、 5和1 
正确答案: B
解析:无 

12、用单链表表示的链式队列的队头在链表的( )位置。 
A、 链头 
B、 链尾 
C、 链中 
正确答案: A
解析:无 

13、判定一个链队列Q(最多元素个数为n)为空的条件是( )。 
A、 Q.front==Q.rear 
B、 Q.front!=Q.rear 
C、 Q.front==(Q.rear+1)%n 
D、 Q.front!=(Q.rear+1)%n 
正确答案: A
解析:无 

14、在链队列Q中,插入s所指结点需顺序执行的指令是( )。 
A、 Q.front->next=s;Q.front=s; 
B、 Q.rear->next=s;Q.rear=s; 
C、 s->next=Q.rear;Q.rear=s; 
D、 s->next=Q.front;Q.front=s; 
正确答案: B
解析:无 

15、在一个链队列Q中,删除一个结点的需要执行的指令是( )。 
A、 Q.rear=Q.front->next; 
B、 Q.rear->next=Q.rear->next->next; 
C、 Q.front->next=Q.front->next->next; 
D、 Q.front=Q.rear->next; 
正确答案: C
解析:无 

16、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时( )。 
A、 仅修改队头指针 
B、 仅修改队尾指针 
C、 队头、队尾指针都要修改 
D、 队头、对尾指针都可能要修改//万一里面只有一个队头那个结点了,就要修改队尾指针 
正确答案: D
解析:无 

17、栈和队列的共同点( )。 
A、 都是先进后出 
B、 都是先进先出 
C、 只允许在端点处插入和删除元素 
D、 没有共同点 
正确答案: C
解析:无 

18、消除递归( )需要使用栈。 
A、 一定 
B、 不一定 
正确答案: B
解析:无 


二、填空题(共14题,42分) 

1、栈的特点是____,队列的特点是____。 
正确答案: 
第1空:先进后出
第2空:先进先出
 

2、线性表、栈和队列都是____结构,线性表可以在线性表的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。 
正确答案: 
第1空:线性
第2空:任何
第3空:栈顶
第4空:队尾
第5空:队首
 

3、有程序如下,则此程序的输出结果(其中栈的元素类型SelemType为char)是____。
void main()
{ stack s;
char x,y;
initstack (s);
x=’c’; y=’k’;
push(s,x);push(s,’a’);push(s,y);
pop(s,y);push(s,’t’);push(s,x);
pop(s,x);push(s,’s’);
while(!stackempty(s)) {pop(s,y);printf(y);}
printf(y);

正确答案: 
第1空:stack
 

4、在栈顶指针为HS的链栈中,判定栈空的条件是____。 
正确答案: 
第1空:HS==NULL
 

5、向栈中压入元素的操作是先____,后____。 
正确答案: 
第1空: 移动栈顶指针 
第2空: 存入元素
 

6、对栈进行退栈时的操作是先____,后____。 
正确答案: 
第1空: 取出元素
第2空: 移动栈顶指针
 

7、用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是____和____;若只设尾指针,则出队和入队的时间复杂度分别是:____和____。 
正确答案: 
第1空: 1和n;   1和1

8、从循环队列中,删除一个元素时,其操作是____。 
正确答案: 
第1空:先取出元素,后移动队尾指针

9、在一个循环队列中,队首指针指向队首元素的____。 
正确答案: 
第1空:前一个位置


10、在具有n个单元的循环队列中,队满时共有____个元素。 
正确答案: 
第1空:n-1

11、在HQ的链队列中,判定只有一个结点的条件是____。 
正确答案: 
第1空:HQ.front==HQ.rear

12、设栈S和队列Q的初始状态为空,元素a,b,c,d,e,f依次通过栈S,一个元素出栈后即进入队列Q。若这6个元素出队列的顺序是b,d,c,f,e,a则栈S的容量至少应该是____。 
正确答案: 
第1空:3

13、有如下递归函数:
int dunno(int m)
{
int value;
if(m==0) value=3;
else value=dunno(m-1)+5;
return(value);
}


执行语句printf(“%d\n”,dunno(3));的结果是____。 
正确答案: 第1空:18

14、设a是含有N个分量的整数数组,写出求n个整数之和的递归定义____,写出求n个整数之积的递归定义____。 
正确答案: 
第1空: 
第2空: 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/515671
推荐阅读
相关标签
  

闽ICP备14008679号