栈和队列相关习题

1.下列关于栈的叙述正确的是( )

A.栈是一种“先进先出”的数据结构
B.栈可以使用链表或顺序表来实现
C.栈只能在栈底插入数据
D.栈不能删除数据
A错误:栈是一种后进先出的数据结构,队列是先进先出的
B正确:顺序表和链表都可以用来实现栈,不过一般都使用顺序表,因为栈想当于是阉割版的顺序表,只用到了顺序表的尾插和尾删操作,顺序表的尾插和尾删不需要搬移元素效率非常高,故一般都是使用顺序表实现
C错误:栈只能在栈顶进行输入的插入和删除操作
D错误:栈是有入栈和出栈操作,出栈就是从栈中删除一个元素

2.链栈与顺序栈相比,比较明显的优点是( )

A.插入操作更加方便
B.删除操作更加方便
C.入栈时不需要扩容

A错误,如果是链栈,一般需要进行头插或者头删操作,而顺序栈一般进行尾插和尾删操作,链表的操作比顺序表复杂,因此使用顺序结构实现栈更简单
B错误,原因参考A
C正确,链式结构实现栈时,每次入栈相当于链表中头插一个节点,没有扩容一说

3.下列关于栈的叙述中,正确的是()

A.栈底元素一定是最后入栈的元素
B.栈顶元素一定是最先入栈的元素
C.栈操作遵循先进后出的原则
D.以上说法均错误

栈是先进后出,队列先进先出,因此:
A错误:栈底元素是最先入栈的
B错误:栈顶元素一定是最后入栈的
C正确,栈的特性后进先出或者先进后出
D错误:C说法明显是正确的

故选择C

4.以下不是队列的基本运算的是( )

A.从队尾插入一个新元素
B.从队列中删除队尾元素
C.判断一个队列是否为空
D.读取队头元素的值

答案:B
解析:
队列只能从队头删除元素。

5.下面关于栈和队列的说法中错误的是( )

A.队列和栈通常都使用链表实现
B.队列和栈都只能从两端插入、删除数据
C.队列和栈都不支持随机访问和随机插入
D.队列是“先入先出”,栈是“先入后出”

A错误:栈是尾部插入和删除,一般使用顺序表实现,队列是头部删除尾部插入,一般使用链表实现
B错误:栈是后进先出,尾部插入和删除;队列是先进先出,尾部插入头部删除
C正确:栈只能访问栈顶元素,不支持随机访问,队列也不支持
D正确:栈和队列的特性

故错误的是A和B

6.下列关于顺序结构实现循环队列的说法,正确的是( )

A.循环队列的长度通常都不固定
B.直接用队头和队尾在同一个位置可以判断循环队列是否为满
C.通过设置计数的方式可以判断队列空或者满
D.循环队列是一种非线性数据结构
队列适合使用链表实现,使用顺序结构(即固定的连续空间)实现时会出现假溢出的问题,因此大佬们设计出了循环队列,循环队列就是为了解决顺序结构实现队列假溢出问题的

A错误:循环队列的长度都是固定的
B错误:队头和队尾在同一个位置时 队列可能是空的,也可能是满的,因此无法判断
C正确:设置计数即添加一个字段来记录队列中有效元素的个数,如果队列中有效元素个数等于空间总大小时队列满,如果队列中有效元素个数为0时队列空
D错误:循环队列也是队列的一种,是一种特殊的线性数据结构

7.对于循环队列,下列叙述中正确的是()

A.队头是固定不变的
B.队头一定大于队尾
C.队头一定小于队尾
D.队头可以大于队尾,也可以小于队尾

A错误:出队列时队头需要往后移动
B错误:从空队列开始插入元素,还没有满一圈时,队尾是大于队头的
C错误:从空队列开始插入元素直到插满,此时队尾已经到达空间末尾,然后出几个元素在继续插入,队头就会大于队尾
D正确:一边插入一边删除,队头和队尾的情况就不确定了,队头可能大于队尾,也可能是小于队尾
故选择D

  • 38
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值