第3章 栈和队列剖析.docx
- 文档编号:24536522
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:25
- 大小:302.39KB
第3章 栈和队列剖析.docx
《第3章 栈和队列剖析.docx》由会员分享,可在线阅读,更多相关《第3章 栈和队列剖析.docx(25页珍藏版)》请在冰豆网上搜索。
第3章栈和队列剖析
《数据结构》
第3章栈和队列
共85题
一、单选
1.
(1)分 题目ID号:
10705 题目难度:
容易
设对一组数据的处理具有“后进先出”的特点,则应采用的数据结构是【1】
A. 队列 B. 栈 C. 顺序表 D. 二叉树
题目答案:
B
2.
(1)分 题目ID号:
10706 题目难度:
容易
若进栈序列为3、5、7、9,进栈和出栈可穿插进行,则不可能的出栈序列是【1】
A. 7,5,3,9 B. 9,5,7,3 C. 9,7,5,3 D. 7,5,9,3
题目答案:
B
3.
(1)分 题目ID号:
10707 题目难度:
较难
设用一维数组A[m]存储栈,令A[m-1]为栈底,t指示当前栈顶的位置。
如果栈不空,则出栈时应使【1】
A. t=t+l B. t=t-1 C. t=m-1 D. 不改变t
题目答案:
A
4.
(1)分 题目ID号:
10708 题目难度:
容易
设用一维数组A[m]存储栈,令A[0]为栈底,top指示当前钱顶的位置,当把栈清空时所要执行的操作是【1】
A. top-- B. top=0 C. top=-1 D. top=m-1
题目答案:
C
5.
(1)分 题目ID号:
10709 题目难度:
容易
设栈s的初始状态为空,如果进栈序列为1、2、3、4、5、6,出栈序列为3、2、5、6、4、1,则s的容量至少是【1】
A. 6 B. 4 C. 2 D. 3
题目答案:
D
6.
(1)分 题目ID号:
10710 题目难度:
容易
设栈s最多能容纳4个元素,现有A、B、C、D、E、F六个元素按顺序进栈,以下可能的出栈序列是【1】
A. E、D、C、B、A、F B. B、C、E、F、A、D
C. C、B、E、D、A、F D. A、D、F、E、B、C
题目答案:
C
7.
(1)分 题目ID号:
10711 题目难度:
容易
链式栈与顺序栈相比,一个比较明显的优点是【1】
A. 插入操作更加方便 B. 通常不会出现栈满的情况
C. 不会出现栈空的情况 D. 删除操作更加方便
题目答案:
B
8.
(1)分 题目ID号:
10712 题目难度:
容易
在完成出栈操作时,【1】
A. 必须判断栈是否满 B. 要判断栈元素的类型
C. 必须判断栈是否空 D. 不必做任何判断
题目答案:
C
9.
(1)分 题目ID号:
10713 题目难度:
容易
已知栈的入栈序列是1、2、3、……、n,出栈序列是e1、e2、……、en。
若e1=n,则ei为【1】
A. i B. n-i+1 C. n-i D. 不能确定
题目答案:
B
10.
(1)分 题目ID号:
10714 题目难度:
容易
在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,
主机将要输出的数据依次写入该缓冲区,打印机则从该缓冲区取出数据打印,该缓冲区应该是一个【1】结构。
A. 栈 B. 队列 C. 线性表 D. 数组
题目答案:
B
11.
(1)分 题目ID号:
10715 题目难度:
容易
【1】不是队的基本运算。
A. 向队尾插入一个元素 B. 读队头元素
C. 删除队中第i个元素 D. 判队是否为空
题目答案:
C
12.
(1)分 题目ID号:
10716 题目难度:
容易
当以顺序方式存储队列时,解决“假溢出”较为有效的方法是采用【1】
A. 顺序队列 B. 链式队列 C. 顺序循环队列 D. 三种都可以
题目答案:
C
13.
(1)分 题目ID号:
10717 题目难度:
容易
设一维数组Q[m]用于存放循环队列中的元素,同时用f指示当前队头元素的位置,r指示当前队尾元素的下一个位置。
假定队中元素个数总小于m,则计算队列中元素个数的公式为【1】
A. (m+r-f)%m B. r-f C. m-(f-r) D. (m+(f-r))%m
题目答案:
A
题目分析:
循环队列是解决假溢出的问题,通常把一维数组看成首尾相接。
在循环意义下的求元素个数的运算可以利用求模运算。
14.
(1)分 题目ID号:
10718 题目难度:
容易
若用一个大小为10的一维数组存储顺序循环队列,且当前rear和front的值分别为4
和8,当从队列中删除3个元素再加入2个元素后,rear和front的值分别是【1】
A. 无法完成要求的操作 B. 6和l C. 7和0 D. 6和11
题目答案:
B
题目分析:
循环队列是解决假溢出的问题,通常把一维数组看成首尾相接。
在循环意义下的加1运算通常用求模运算来实现。
所以入队和出队时的操作分别为:
rear=(rear+1)%m,front=(front+1)%m。
15.
(1)分 题目ID号:
10719 题目难度:
容易
栈和队列都是运算受限的线性表,它们的共同点是【1】
A. 只允许在端点处插入和删除元素 B. 元素都是后进先出
C. 元素都是先进先出 D. 必须采用顺序存储结构
题目答案:
A
题目分析:
栈和队列都是运算受限的线性表,只允许在表端点处进行操作。
16.
(1)分 题目ID号:
11091 题目难度:
容易
在一个链式队列中,假设front和rear分别为队头和队尾指针,则插入s所指结点的操
作为【1】
A. rear->next=s;rear=s; B. front->next=s;front=s;
C. s->next=front;front=s; D. s->next=rear;rear=s;
题目答案:
A
题目分析:
队列是运算受限的线性表(FIFO),插入元素只能插在队尾,所以需修改队尾指针。
17.
(1)分 题目ID号:
11096 题目难度:
容易
用链接方式存储的队列,在进行删除运算时【1】
A. 仅修改头指针 B. 头、尾指针可能都要修改
C. 头、尾指针都要修改 D. 仅修改尾指针
题目答案:
B
题目分析:
若队列中的元素多于一个,删除队列中的队尾元素,只需修改队尾指针;若队列中只有一个元素,删除该元素后,队头队尾指针都需要修改。
18.
(1)分 题目ID号:
11097 题目难度:
容易
设计一个判别表达式中左,右括号是否配对出现的算法,采用【1】数据结构最佳。
A. 线性表的顺序存储结构 B. 队列
C. 线性表的链式存储结构 D. 栈
题目答案:
D
19.
(1)分 题目ID号:
11099 题目难度:
容易
表达式a*(b+c)-d的后缀表达式是【1】
A. abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd
题目答案:
B
20.
(1)分 题目ID号:
11228 题目难度:
容易
已知队列(4,41,5,7,18.26,15),第一个进入队列的元素是4,则第五个出队列的元素是【1】
A. 5 B. 41 C. 18 D. 7
题目答案:
C
21.
(1)分 题目ID号:
11229 题目难度:
容易
对于顺序存储的循环队列,存储空间大小为N,头指针为F,尾指针为R,队列中元素
的个数应为【1】
A. R-F B. N+R-F C. (R—F十1)%N D. (N+R-F)%N
题目答案:
D
22.
(1)分 题目ID号:
11230 题目难度:
容易
一个队列的进队列顺序是1,2,3,4,则出队列顺序为【1】
A. 4,3,2,1 B. 2,4,3,1 C. 1,2,3,4 D. 3,2,1,4
题目答案:
C
23.
(1)分 题目ID号:
11231 题目难度:
容易
下列关于栈的叙述中正确的是【1】
A. 在栈中只能插入数据 B. 在栈中只能删除数据
C. 栈是先进先出的线性表 D. 栈是先进后出的线性表
题目答案:
D
24.
(1)分 题目ID号:
11232 题目难度:
容易
设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是【1】
A. 6 B. 4 C. 3 D. 2
题目答案:
C
题目分析:
根据栈的性质(LIFO)得,e2出栈前,栈中存有e1和e2两个元素,e4出栈前,栈中存有e1、e3和e4三个元素,e4和e3出栈以后,e5和e6入栈,栈中同样存在e1、e5和e6三个元素,然后三个元素依次出栈,所以栈的容量至少应该为3。
25.
(1)分 题目ID号:
11651 题目难度:
容易
若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是【1】
A. top=top+1; V[top]=x B. V[top]=x; top=top+1
C. top=top-1; V[top]=x D. V[top]=x; top=top-1
题目答案:
C
题目分析:
栈式运算受限的线性表,只允许在栈顶进行插入和删除操作。
本题中栈顶指针为n+1,该数组将栈顶放在了下标大的一端,所以在进行入栈操作时top指针应该进行减一操作。
通常元素进栈的操作为:
先移动栈顶指针后存入元素。
26.
(1)分 题目ID号:
11652 题目难度:
容易
一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1≤i≤n)个元素是【1】
A. 不确定 B. n-i+1 C. i D. n-i
题目答案:
B
题目分析:
【解析】根据栈的性质(LIFO),若输出的第一个元素是n,则表明所有的元素已经入栈,则出栈顺序为n,n-1, …,3,2,1。
27.
(1)分 题目ID号:
11653 题目难度:
容易
如果我们用数组A[1..100]来实现一个大小为100的栈,并且用变量top来指示栈顶,top的初值为0,表示栈空。
请问在top为100时,再进行入栈操作,会产生【1】
A. 正常动作 B. 溢出 C. 下溢 D. 同步
题目答案:
B
题目分析:
当top为100时,表示栈已经满了,此时再进行入栈操作,则会造成溢出。
28.
(1)分 题目ID号:
11654 题目难度:
容易
栈在【1】中应用。
A. 递归调用 B. 子程序调用 C. 表达式求值 D. A,B,C
题目答案:
D
29.
(1)分 题目ID号:
11655 题目难度:
容易
若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
【1】
A. 1和 5 B. 2和4 C. 4和2 D. 5和1
题目答案:
B
题目分析:
循环队列是解决假溢出的问题,通常把一维数组看成首尾相接。
在循环意义下的加1运算通常用求模运算来实现。
所以入队和出队时的操作分别为:
rear=(rear+1)%m,front=(front+1)%m。
30.
(1)分 题目ID号:
11656 题目难度:
容易
栈和队列的共同点是【1】
A. 都是先进先出 B. 都是先进后出
C. 只允许在端点处插入和删除元素 D. 没有共同点
题目答案:
C
题目分析:
栈和队列都是运算受限的线性表,只允许在表端点处进行操作。
31.
(1)分 题目ID号:
11657 题目难度:
容易
判定一个栈S(元素个数最多为MAXSIZE)为空和满的条件分别为【1】
A. S->top!
=-1 S->top!
=MAXSIZE-1
B. S->top=-1 S->top=MAXSIZE-1
C. S->top=-1 S->top!
=MAXSIZE-1
D. S->top!
=-1 S->top=MAXSIZE-1
题目答案:
B
二、多选
1.
(1)分 题目ID号:
11227 题目难度:
容易
已知元素(8,25,14,87,51,90,6,19,20)。
这些元素以怎样的顺序进入栈;才能使出栈的顺序满足:
8在51前面;90在87后面;20在14后面;25在6前面;19在90后面【1】
A. 20,6,8,51,90,25,14,19,87 B. 51,6,19,20,14,8,87,90,25
C. 19,20,90,8,6,25,51,14,87 D. 6,25,51,8,20,19,90,87,14
题目答案:
BCD
三、是非
1.
(1)分 题目ID号:
11233 题目难度:
容易
【1】栈和队列逻辑上都是线性表。
题目答案:
T
2.
(1)分 题目ID号:
11234 题目难度:
容易
【1】采用循环链表作为存储结构的队列就是循环队列。
题目答案:
F
3.
(1)分 题目ID号:
11235 题目难度:
容易
【1】栈和队列都是顺序存取的线性表,但它们对存取位置的限制不同。
题目答案:
T
4.
(1)分 题目ID号:
11236 题目难度:
容易
【1】在栈中只能插入数据。
题目答案:
F
5.
(1)分 题目ID号:
11237 题目难度:
容易
【1】在栈满情况下不能做进栈运算,否则产生“上溢”。
题目答案:
T
6.
(1)分 题目ID号:
11238 题目难度:
容易
【1】判定一个队列q(最多元素为m)为空的条件是(q一>rear十1)%m=q一>front.
题目答案:
F
四、填空
1. (3)分 题目ID号:
10746 题目难度:
容易
一个理发店有两名理发师,一名理发师专为年纪最大的顾客服务,另一名理发师为进入理发店时间最长的顾客服务,进入理发店的顾客根据到达的时间先后顺序都排人一个队列。
假设用程序来模拟理发店顾客队列的变化情况,该顾客队列在逻辑上可视为哪种数据结构?
【1】要存储相关信息应采用哪一种存储结构?
【2】为什么?
【3】
题目答案:
线性表】链式存储结构】因为顾客出队没有限定在一端;新来的顾客要加入队列,接受理发师服务的顾客要离开队列,对顾客队列这个线性表来说,需要经常的插入和删除操作。
】
2.
(2)分 题目ID号:
10782 题目难度:
容易
在以顺序方式存储队列时,会出现“假溢出”现象,请解释这一现象【1】,并说明解决“假溢出”的方法及其原理。
【2】
题目答案:
“假溢出”是指存储队列的空间中还有空余,但不能进行入队操作,它是由队列的操作方式决定的。
】解决“假溢出”的方法有:
①建立一个足够大的存储空间,但这样会造成空间的浪费。
②采用循环队列方式。
把存储队列的一维空间看成是一个首尾相接的圆环,这样就可以实现对由于元素出队而空出来的空间的循环使用。
③采用平移元素的方法。
每当出现“假溢出”时,将队列中所有元素平移,使当前队头元素位于数组的最前端,并修改队头和队尾指示器。
此方法效率很低。
】
3. (5)分 题目ID号:
10785 题目难度:
较难
有n个人排成一排,每个人的编号为i(0≤i≤n),现让这n个人从左到右1、2、l、2、
……报数,凡报“1”的人出列,报“2”的人立即站到队的最右端,此过程反复进行,直到n个人都已出列。
设已知n个人原来在队列中的顺序,以下程序可求出他们出列的顺序。
例如,设n=6,韧始顺序为1、2、3、4、5、6,则出列顺序为1、3、5、2、6、4。
算法说明:
此问题可利用队列结构处理。
设一维数组P[n]存放循环队列,f和r分别为队列的队头和队尾指示器,首先让n个人的初始序号依次入队,然后反复执行以下操作,直到队列为空。
①输出队头元素,并删除之:
②若刚刚离队的元素值在当时的队列中最大,则记录下当前队列中最大元素值,否则将队头元素插入到队尾。
程序如下:
#include using std: : cout; using std: : endl; const int N=20; int main( ){ int p[N]; int f=0,r=0,qm=N; for(int i=1;i<=N;i十十){ p[ 【1】 ]=i; r=(r十1)%N; } do{ int t=p[f]; cout< f= 【2】 ; if(t==qm)qm--; else{ 【3】 =p[f]; r= 【4】 ; f= 【5】 ; } }while(f! =r); cout< return 0; } 题目答案: r】(f+1)%N 】p[r]】(r+1)%N】(f+1)%N】 4. (5)分 题目ID号: 10791 题目难度: 较难 以下函数用于检验一个表达式中括号是否匹配。 如果匹配返回1,否则返回0。 设表达式中只使用了括号( )和方括号[ ],表达式在一维数组exp[]中。 算法说明: 为检查表达式中括号的匹配情况,可设置一个栈s。 从左到右扫描表达式,若当前字符为左括号,则将其压入栈s中。 若当前字符为右括号,则检查它是否与栈顶的左括号相匹配。 若相匹配,则删去这一对括号;不相匹配,则表示表达式中括号不匹配。 若扫描完表达式时栈为空,则说明表达式中括号是匹配的,否则是不匹配的。 函数中使用变量flag作为括号匹配的标志,flag为1表示匹配,flag为0表示不匹配。 程序如下: const int MaxSize=100; int matching(char exp[MaxSize]){ char s[MaxSize]; int top=-1; //s作为顺序栈,top为栈顶指示器 int flag,i; flag=1;i=0; while(exp[i]&&flag){ switch(exp[i]){ case'(': case'[': 【1】=exp[i];break; case')': if(【2】)top--; else flag=0; break; case']': if(【3】)top--; else flag=0; break; } 【4】 } if(【5】)return 1; else return 0; } 题目答案: s[++top]】top! =-1&&s[top]=='('】top! =-1&&s[top]=='['】i++】flag&&top==-1】 5. (3)分 题目ID号: 10796 题目难度: 较难 编写一个函数,利用队列和栈的基本运算将指定队列中的元素进行逆转。 算法说明: 利用一个临时栈tempst,将指定队列que中所有元素出队并入栈到tempst,然后再将栈tempst中的所有元素出栈并入队到que,此时,队列que中的元素已发生逆转。 在以下函数中使用了STL的容器适配器定义队列和栈。 程序如下: #include #include using namespace std; template void reverse_que(quedu T x; stack while( 【1】 ){ x=que.front(); //取队头元素到x tempst.push(x); //x入栈 【2】 ; } while(! tempst.empty()){ //当栈不为空时 x=tempst.top(); //取栈顶元素到x 【3】 ; tempst.pop(); //出栈 } } 题目答案: ! que.empty()】que.pop()】que.push(x)】 6. (1)分 题目ID号: 11104 题目难度: 容易 循环队列的引入,目的是为了克服【1】 题目答案: 假溢出时大量移动数据元素】 7. (1)分 题目ID号: 11105
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 栈和队列剖析 队列 剖析