数据结构 习题 第三章 栈和队列 (C语言描述)

最近在复习数据结构,所以想把平时上课做的习题做个总结,如果大家有遇到这方面的问题就可以参考一下了,废话不多说,直接开始吧。

题目中的栈和队列均以指针命名,比如栈s s表示指向栈的指针。 数组Q[0…m] 表示数组的最小下标是0,最大下标是m 数组q[M]表示数组的空间大小为M,对应的下标 0…M-1

1、单选题
在栈中,下列说法正确的是(C )。
A.每次插入总是在栈底,每次删除也总是在栈底。
B.每次插入总是在栈顶,每次删除总是在栈底。
C.每次插入总是在栈顶,每次删除也总是在栈顶。
D.每次插入总是在栈底,每次删除总是在栈顶。

2、单选题
设有一个栈,按A、B、C、D的顺序进栈,则下列(B )为可能的出栈序列。
A. CDAB
B. ACDB
C. DBAC
D. DCAB

C、A进 A出 B进 C进 C出 D进 D出 B出

3、单选题(5.0分)
顺序栈的上溢是指(D )。
A.栈满时作退栈运算
B.栈空时作退栈运算
C.栈空时作进栈运算
D.栈满时作进栈运算

下溢:栈空时作退栈运算

4、单选题
设栈S的初始状态为空,现有五个元素组成的序列1,2,3,4,5,对该序列在栈S上依次进行PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH操作,出栈的元素序列是(B)。
A.3,4
B.2,3
C.5,4,3,2,1
D.2,1

5、单选题
在顺序栈s中,当做出栈处理时,s->top变化为(B )
A. s->top不变
B. s->top- -
C. s->top++
D. s->top=0

6、单选题
向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行(B)。
A. s->next=hs->next;hs->next=s;
B. hs->next=s;
C. s->next=hs;hs=s;
D.s->next=hs;hs=hs->next;

7、单选题
在队列中,下列说法正确的是(B )。
A.每次插入总是在队尾,每次删除也总是在队尾。
B.每次插入总是在队尾,每次删除总是在队头。
C.每次插入总是在队头,每次删除也总是在队头。
D.每次插入总是在队头,每次删除总是在队尾。

8、单选题
在带头结点的链队列q中,用q->front表示队头指针,q->rear表示队尾指针,删除链队列的队头结点的主要语句为(C )。

A. 
s=q->front; 
q->front->next= s->next; 
free(s);
B.
s=q; 
q->front->next= s->next;
free(s);
C.
s=q->front->next;
q->front->next= s->next;
free(s);
D.
s=q->front->next;
q->front= s->next;
free(s);

9、单选题
循环队列sq队列满的条件为(A)。
A.(sq->rear+1)% MAXSIZE= sq->front
B. sq->front= sq->rear
C.(sq->front +1)% MAXSIZE= sq->rear
D. sq->front= sq->rear+1

循环队列:队满为了与队空区分开,所以要浪费一个存储空间
判别对空: sq->rear == sq->front
入队: (尾指针+1)sq->rear = (sq->rear+1) % MAXSIZE
出队: (头指针+1) sq->front = (sq->front+1)%MAXSIZE

10、单选题
循环队列sq中,用数组elem[0‥25]存放数据元素,设当前sq->front为20,sq->rear为12,则当前队列中的元素个数为( D)。
A.8
B.16
C.17
D.18

计算:(sq->rear - sq->front+maxsize)% maxsize = (12-20+26)%26 = 18

11、单选题
设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。如果队列中元素的个数为11,front的值为25,则rear应指向(C )元素。
A.Q[4]
B.Q[15]
C.Q[5]
D.Q[14]

计算:(5-25+31)%31 = 11

12、单选题
队列操作的原则是(C )。
A.后进先出
B.只能进行插入
C.先进先出
D.只能进行删除

13、判断题
顺序队列存在“假溢”问题。

正确。
所以引入了循环队列

14、判断题
假设循环队列中的元素存放在一维数组Q[MAXSIZE]中,那么一维数组中最多能够存储的的队列元素个数是MAXSIZE-1.

正确。

15、判断题
循环队列不是线性结构。

错误。循环队列是线性结构。
线性结构一般有:
1、线性表
①顺序表
②单链表
③循环链表
④双链表
⑤静态链表
2、栈和队列
①栈——后进先出的线性表,简称LIFO表
②队列——先进先出的线性表,简称FIFO表
3、串(字符串)——是零个或多个字符组成的有限序列。它的每个结点仅由一个字符组成

我把我目前写的关于数据结构 题目的链接全部汇总整理在下面,有需要的小伙伴自己点击哈。

  • 数据结构 习题 第一章 概论
  • 数据结构 习题 第二章 线性表 (C语言描述)
  • 数据结构 习题 第三章 栈和队列 (C语言描述)
  • 数据结构 习题 第四章 串 (C语言描述)
  • 数据结构 习题 第五章 多维数组和广义表(C语言描述)
  • 数据结构 习题 综合复习

实验:

  • 数据结构 实验一 顺序表的操作
  • 数据结构 实验二 链表的基本操作
  • 数据结构 实验三 栈的基本运算
  • 数据结构 实验四 二叉树的操作
  • 数据结构实验五-马踏棋盘
  • 数据结构-顺序表的排序操作-冒泡排序

因为最近还在准备别的考试,所以目前就先更新这么多哈,后面有时间的话,还会再写一篇关于数据结构实验的题目,欢迎大家关注呦!

笔者使用的教材是高等教育出版社唐策善、李龙澍、黄刘生编著的《数据结构——用C语言描述》。
因为都是我自己打字,或者我的答案,可能会有错误的地方,如果有的话,欢迎大家指出。

你可能感兴趣的:(数据结构,数据结构,队列,栈,c语言)