判断题
1-1
若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。F
1-2
所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。F
1-3
在对不带头结点的链队列作出队操作时,不会改变头指针的值。F
1-4
不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑"溢出"情况。T
1-5
队列和栈都是运算受限的线性表,只允许在表的两端进行运算。F
1-6
栈和队列的存储方式,既可以是顺序方式,也可以是链式方式。T
1-7
循环队列也存在着空间溢出问题。T
1-8
循环队列执行出队操作时会引起大量元素的移动。F
1-9
栈是插入和删除只能在一端进行的线性表;队列是插入在一端进行,删除在另一端进行的线性表。T
1-10
在n个元素连续进栈以后,它们的出栈顺序和进栈顺序一定正好相反。F
1-11
环形队列中有多少个元素可以根据队首指针和队尾指针的值来计算。T
1-12
栈和队列的插入和删除操作特殊,所以,栈和队列是非线性结构。F
1-13
序列{1,2,3,4,5}依次入栈,则不可能得到{3,4,1,2,5}的出栈序列.T
1-14
队列中允许插入的一端叫队头,允许删除的一端叫队尾。F
选择题
2-1
若用大小为6的数组来实现循环队列,且当前front和rear的值分别为0和4。当从队列中删除两个元素,再加入两个元素后,front和rear的值分别为多少?
(2分)
A.
2和0
B.
2和2
C.
2和4
D.
2和6
2-2
如果循环队列用大小为m的数组表示,且用队头指针front和队列元素个数size代替一般循环队列中的front和rear指针来表示队列的范围,那么这样的循环队列可以容纳的元素个数最多为:
(2分)
A.
m-1
B.
m
C.
m+1
D.
不能确定
作者
DS课程组
单位
浙江大学
2-3
以下数据结构中,( )是非线性数据结构。
(1分)
A.
树
B.
字符串
C.
队列
D.
栈
作者
周治国
单位
东北师范大学
2-4
设栈S和队列Q的初始状态均为空,元素{1, 2, 3, 4, 5, 6, 7}依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是{2, 5, 6, 4, 7, 3, 1},则栈S的容量至少是:
(2分)
A.
1
B.
2
C.
3
D.
4
作者
DS课程组
单位
浙江大学
2-5
线性表、堆栈、队列的主要区别是什么?
(1分)
A.
线性表用指针,堆栈和队列用数组
B.
堆栈和队列都是插入、删除受到约束的线性表
C.
线性表和队列都可以用循环链表实现,但堆栈不能
D.
堆栈和队列都不是线性结构,而线性表是
作者
DS课程组
单位
浙江大学
2-6
栈和队列的共同点( )。
(2分)
A.
都是先进先出
B.
都是后进先出
C.
只允许在端点处插入和删除元素
D.
没有共同点
作者
严冰
单位
浙大城市学院
2-7
下列关于线性表,栈和队列叙述,错误的是( )。
(2分)
A.
线性表是给定的n(n必须大于零)个元素组成的序列
B.
线性表允许在表的任何位置进行插入和删除操作
C.
栈只允许在一端进行插入和删除操作
D.
队列只允许在一端进行插入一端进行删除
作者
严冰
单位
浙大城市学院
2-8
设用一个数组A[1……N]来存储一个栈,令A[N]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。当从栈中弹出一个元素时,变量T的变化为( )。
(2分)
A.
T=T+1
B.
T=T-1
C.
T不变
D.
T=N
作者
严冰
单位
浙大城市学院
2-9
链式栈与顺序栈相比,一个比较明显的优点是( )。
(2分)
A.
插入操作更加方便
B.
通常不会出现栈满的情况
C.
不会出现栈空的情况
D.
删除操作更加方便
作者
严冰
单位
浙大城市学院
2-10
(neuDS)在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的长度是( )。
(2分)
A.
rear-front
B.
rear-front+1
C.
(rear-front+maxSize)%maxSize
D.
(rear-front+1)%maxSize
作者
徐婉珍
单位
广东东软学院
2-11
(nueDS_C++)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是( )。提示:对于栈,可以全进再依次出;也可以进一个出一个;也可以进一部分,出一个,再进一部分;但是出栈之后,不能再入栈。
(2分)
A.
3
B.
4
C.
6
D.
2
作者
姚志军
单位
广东东软学院
2-12
关于栈和队列的下列说法正确的是()
(2分)
A.
栈的插入操作是在栈顶进行,插入时需将栈内所有元素后移;
B.
栈是后进先出的结构,出栈时除了栈顶元素,其余元素无需移动;
C.
循环队列的出队操作删除的是队头元素,采用循环队列存储时,其余队列元素均需要移动;
D.
链队列的入队操作在表尾进行,操作时间与队列长度成正比
作者
DS课程组
单位
临沂大学
2-13
一个栈的入栈序列是a,b,c,d,e,则栈的出栈序列不可能的是( )。
(1分)
A.
edcba
B.
decba
C.
dceab
D.
abcde
作者
赵玉霞
单位
滨州学院
2-14
在一个链表表示的队列中, f和r分别指向队列的头和尾。下列哪个操作能正确地将s结点插入到队列中:
(2分)
A.
f->next=s; f=s;
B.
r->next=s; r=s;
C.
s->next=r; r=s;
D.
s->next=f; f=s;
作者
王俊玲
单位
集美大学
2-15
栈和队列具有相同的。
(2分)
A.
抽象数据类型
B.
逻辑结构
C.
存储结构
D.
运算
作者
王东
单位
贵州师范学院
2-16
假定利用数组a[n]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为( )。
(2分)
A.
a[–top]=x
B.
a[top–]=x
C.
a[++top]=x
D.
a[top++]=x
作者
王东
单位
贵州师范学院
2-17
队列的“先进先出”特性是指( )。
Ⅰ.最后插入队列中的元素总是最后被删除
Ⅱ.当同时进行插入、删除操作时,总是插入操作优先
Ⅲ.每当有删除操作时,总要先做一次插入操作
Ⅳ.每次从队列中删除的总是最早插入的元素
(2分)
A.
Ⅰ
B.
Ⅰ、Ⅳ
C.
Ⅱ、Ⅲ
D.
Ⅳ
作者
王东
单位
贵州师范学院
2-18
已知循环队列存储在一维数组A[0…n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是( )。
(2分)
A.
0,0
B.
0,n-1
C.
n-1,0
D.
n-1,n-1
作者
王东
单位
贵州师范学院
2-19
执行函数时,其局部变量一般采用( )进行存储。
(2分)
A.
树形结构
B.
静态链表
C.
栈结构
D.
队列结构
作者
王东
单位
贵州师范学院
2-20
对空栈 S 进行 Push 和 Pop 操作,入栈序列为 a, b, c, d, e,经过 Push, Push, Pop, Push, Pop, Push, Push, Pop 操作后,得到的出栈序列是:
(2分)
A.
b, a, c
B.
b, a, e
C.
b, c, a
D.
b, c, e
作者
考研真题
单位
浙江大学
2-21
用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为( )。
(2分)
A.
SXSSSXXX
B.
SXSXSXSX
C.
SSSSXXXX
D.
SXSSXSXX
填空题
4-1
栈的运算遵循
后进先出
的原则。
4-2
以下运算实现在链队上的入队列,请在空白处用适当句子予以填充。
void EnQueue(QueptrTp *lq,DataType x){
LqueueTp *p;
p=(LqueueTp *)malloc(sizeof(LqueueTp));
p->data=x;
p->next=NULL;
(lq->rear)->next=p;
lq->rear=p; }
4-3
以下运算实现在链栈上的初始化,请在空白处用请适当句子予以填充。
typedef struct Node{
DataType data;
struct Node *next;
}StackNode,*LStackTp;
void InitStack(LStackTp &ls){
top=-1;}。