数据结构与算法分析 第三章 栈和队列 作业讲解

参考教材:《数据结构(C语言版 第2版)》 严蔚敏,李冬梅,吴伟民编著,人民邮电出版社,2022年版。

截图未标明出处均为原创或取自《数据结构(C语言版 第2版)》~

 

本文对应的作业题讲解视频:

 数据结构与算法分析作业讲解视频合集icon-default.png?t=N7T8https://www.bilibili.com/video/BV1NN411A7hd/?share_source=copy_web&vd_source=7fbf4cbf97db097fe9c00746d1be6e44

作业讲解文档链接目录: 

第二章 线性表

第三章 栈和队列

第四章 串、数组和广义表

第五章 树和二叉树

第六章 图

第七章 查找

第八章 排序

(۶//•̀ᴗ•́)۶//      (۶//*'▽'*)۶//      (۶//๑˃̵ᴗ˂̵)۶//      (۶//•̀ᴗ•́)۶//      (۶//*'▽'*)۶//      (۶//๑˃̵ᴗ˂̵)۶/

         ╭═════╮╭═══════════╮
     ╭╯让路!   ║ 题来了!题来了!
       ╰⊙═══⊙╯╰═⊙═══⊙═══⊙╯

单选题1

一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i个元素是(        )。(1<=i<=n)

A. 不确定
B. n-i+1
C. i
D. n-i

正确答案:B
思路:

方法1:带入特殊值:令i = n = 2; 则输出的第2个元素应该=1,带入到四个选项中:

B: 2-2+1 =1 √;C: 2 × ;D:2 - 2=0 ×;所以选B

方法2:

输入

1

2

3

......

i

......

n

输出

n

n-1

n-2

......

?

......

1

方法3:

输入

1

2

3

......

i

......

n

输出

n

n-1

n-2

......

?

......

1

辅助做题行

1 + n = n+1

2 + n-1 = n+1

3 + n-2 = n+1

i + ? = n+1

n + 1 = n+1

单选题2

若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是(         )。

A. i-j-1
B. i-j
C. j-i+1
D. 不确定

正确答案:D
思路:

(1) push(s, 1); pop(s); push(s, 2); pop(s); push(s, 3); pop(s);

输出序列:1, 2, 3

(2)  push(s, 1); push(s, 2);push(s, 3); pop(s); pop(s);pop(s);

输出序列:3, 2, 1

单选题3

若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是(    )。

A. i
B. n-i
C. n-i+1
D. 不确定

正确答案:D
思路:

最后一个输出的元素是N,前面N-1个元素有很多的组合方式,所以第i个输出的是谁还是不确定。

和第二题类比;和第一题类比

单选题4

有六个元素6,5,4,3,2,1 顺序进栈,问下列哪一个不是合法的出栈序列?(        )

A. 5 4 3 6 1 2
B. 4 5 3 1 2 6
C. 3 4 6 5 2 1
D. 2 3 4 1 5 6

正确答案:C

单选题5

设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是(    )。

A. 5 1 2 3 4
B. 4 5 1 3 2
C. 4 3 1 2 5
D. 3 2 1 5 4

正确答案:D

单选题6

设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为 (    )。

A. fedcba
B. bcafed
C. dcefba
D. cabdef

正确答案:D

单选题7

输入序列为ABC,可以变为CBA时,经过的栈操作为(    )

A. push,pop,push,pop,push,pop
B. push,push,push,pop,pop,pop
C. push,push,pop,pop,push,pop
D. push,pop,push,push,pop,pop

正确答案:B

单选题8

循环队列的引入,目的是为了克服假溢出时大量移动数据元素。(  )

A. 正确
B. 错误

正确答案:A

单选题9

栈在(    )中应用。

A. 递归调用
B. 子程序调用
C. 表达式求值
D. A,B,C

正确答案:D

多选题10

依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列? (   )

A. {d ,e,c,f,b,g,a}
B. {f,e,g,d,a,c,b}
C. {e,f,d,g,b,c,a}
D. {c,d,b,e,f,a,g}

正确答案:A;D

填空题11

______  是限定仅在表尾进行插入或删除操作的线性表。

正确答案:栈
思路:

填空题12

设有一个空栈,现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,输出序列是______  。

正确答案:2, 3
思路:

push(s, 1); push(s, 2); pop(s):弹出栈顶元素2  

push(s, 3); pop(s):弹出栈顶元素3

push(s, 4); push(s, 5);

单选题13

设计一个判别表达式中左,右括号是否配对出现的算法,采用(    )数据结构最佳。

A. 线性表的顺序存储结构
B. 队列
C. 线性表的链式存储结构
D. 栈

正确答案:D

单选题14

一个递归算法必须包括(    )。

A. 递归部分
B. 终止条件和递归部分
C. 迭代部分
D. 终止条件和迭代部分

正确答案:B
思路:

单选题15

递归过程或函数调用时,处理参数及返回地址,要用一种称为(    )的数据结构。

A. 队列
B. 多维数组
C. 栈
D. 线性表

正确答案:C

单选题16

栈和队列的共同点是(    )。

A. 都是先进先出
B. 都是先进后出
C. 只允许在端点处插入和删除元素
D. 没有共同点

正确答案:C

单选题17

假设以数组A[]存放循环队列的元素,数组容量为m,其头尾指针分别为front和rear,则当前队列中的元素个数为( )

  1. (rear-front+m)%m
  2. rear-front+1
  3. (front-rear+1)%m
  4. (rear-front)%m

正确答案:A
思路:

单选题18

循环队列存储在数组A[0..m]中,则入队时的操作为(    )。

A. rear=rear+1
B. rear=(rear+1) mod (m-1)
C. rear=(rear+1) mod m
D. rear=(rear+1)mod(m+1)

正确答案:D
思路:

mod:modulo 取模运算,%

单选题19

若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?(    )

A. 1和 5
B. 2和4
C. 4和2
D. 5和1

正确答案:B

单选题20

最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是  (    )。

A. (rear+1) MOD n=front
B. rear=front
C. rear+1=front
D. (rear-l) MOD n=front

正确答案:B
思路:

单选题21

循环队列也存在空间溢出问题。(    )

A. 正确
B. 错误

正确答案:A
思路:

解决不了真溢出

单选题22

即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。(    )

A. 正确
B. 错误

正确答案:B

单选题23

若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1. (    )

A. 正确
B. 错误

正确答案:A

单选题24

消除递归不一定需要使用栈,此说法(    )

A. 正确
B. 错误

正确答案:A
思路:

单选题25

栈与队列是一种特殊操作的线性表。(    )

A. 正确
B. 错误

正确答案:A

单选题26

栈和队列都是限制存取点的线性结构。(    )

A. 正确
B. 错误

正确答案:A

单选题27

队列是一种插入与删除操作分别在表的两端进行的线性表,是先进后出型结构。(    )

A. 正确
B. 错误

正确答案:B

单选题28

通常使用队列来处理函数或过程的调用。(    )

A. 正确
B. 错误

正确答案:B

单选题29

栈和队列都是线性表,只是在插入和删除时受到了一些限制。(    )

A. 正确
B. 错误

正确答案:A

单选题30

栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。(    )

A. 正确
B. 错误

正确答案:A

୧ʕ•̬͡•ʕ•̫͡•♡ʕ͙•̫͑͡•ʔͦʕͮ•̫ͤ͡•ʔ͙ʕ•̫͡•ʕ•̫͡•ʔ୧ʕ•̬͡•ʕ•̫͡•♡〰︎ \ HAVE A GOOD DAY / 〰︎ ʕ•̫͡•ʕ•̫͡•ʔ୧ʕ•̬͡•ʕ•̫͡•♡ʕ͙•̫͑͡•ʔͦʕͮ•̫ͤ͡•ʔ͙୧ʕ•̬͡•ʕ•̫͡•♡ 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值