数据结构:笔记-队列-笔记

1、对于循环队列,下列叙述中正确的是( )。
正确答案: D 你的答案: D (正确)
队头指针是固定不变的
队头指针一定大于队尾指针
队头指针一定小于队尾指针
队头指针可以大于队尾指针,也可以小于队尾指针
解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以对头指针有时可能大于队尾指针有时也可能小于队尾指针,入队时 尾指针追着头指针,出队的时候 头指针追着尾指针 。对于队列,队头和队尾指针是一个在队头,一个在队尾,不可以改变,因此队头指针小于队尾指针。
而对于循环队列,队头和队尾指针也是一个在队首,一个在队尾,但是可以改变,因此队头指针可以大于队尾指针,也可以小于队尾指针。

2、下列叙述中正确的是( )。
正确答案: D 你的答案: D (正确)
循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
循环队列中元素的个数是由队头指针和队尾指针共同决定
解析:循环队列中,入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,所以需要头尾指针共同来反映入队和出队。而且元素个数=(尾指针-头指针+队列容量)%队列容量。

3、队列的“先进先出”特性是指 。
正确答案: D 你的答案: D (正确)
最早插入队列中的元素总是最后被删除
当同时进行插入、删除操作时,总是插入操作优先
每当有删除操作时,总是要先做一次插入操作
每次从队列中删除的总是最早插入的元素

4、队列是一种插入和删除操作分别在表的两端进行的线性表,是一种先进后出的结构,这样的说法正确吗?
正确答案: B 你的答案: B (正确)
正确
不正确

5、下列叙述中正确的是
正确答案: A 你的答案: A (正确)
循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
循环队列中的元素个数随队头指针的变化而动态变化
循环队列中的元素个数随队尾指针的变化而动态变化
以上说法都不对
解析:循环队列中的元素个数与队头指针和队尾指针的变化而变化

6、递归算法一般需要利用哪种数据结构实现?
正确答案: D 你的答案: C (错误)
数组
链表
队列

解析:递归的过程就是压栈的过程,先把数据压进栈,递归结束时,开始一一出栈。递归算法就是栈的过程。

7、设循环队列的结构是:

const int Maxsize=100;

typedef int Data Type;

typedef struct {

Data Type data[Maxsize];

int front, rear;
}Queue;
若 一个 Queue 类型的队列 Q ,试问判断队列满的条件应是下列哪一个语句
正确答案: D 你的答案: D (正确)
Q.frontQ.rear;
Q.front-Q.rear
Maxsize;
Q.front+Q.rear=Maxsize;
Q.front==(Q.rear+1)%Maxsize;

解析:循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件frontrear来判别队列是"空"还是"满"。
解决这个问题的方法至少有两种:
① 另设一布尔变量以区别队列的空和满;
②另一种方式就是数据结构常用的: 队满时:(rear+1)%n
front,n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算.

8、对于循环队列 。
正确答案: D 你的答案: D (正确)
无法判断队列是否为空
无法判断队列是否为满
队列不可能满
以上说法都不对

9、以下哪一个不是队列的基本运算?( )

正确答案: A 你的答案: D (错误)
在队列第i个元素之后插入一个元素
从队头删除一个元素
断一个队列是否为空
读取队头元素的值

10、队列逻辑上是一个下端和上端既能增加又能减少的线性表()
正确答案: B 你的答案: A (错误)


解析:队列是一种操作受限 的结构,即只能在队首删除和队尾插入

11、设循环队列的容量为50(序号从0到49),现经过一系列的入队和出队运算后,有 front=16,rear=5(rear指向队尾元素的后一位置),当前循环队列中元素个数为( )
正确答案: B 你的答案: D (错误)
11
39
40
12
解析:求队列元素的个数的计算公式为:求循环队列中的元素个数的公式为:(rear-front+size)%size,size是循环队列的容量

12、设顺序循环队列Q[0,M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位,尾指针R总是指向队尾元素的当前位置,则该循环队列职工的元素个数为( )?

正确答案: B 你的答案: B (正确)
(F-R)%M
(R-F+M)%M
(F-R+M)%M
R-F-1

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

正确答案: A 你的答案: A (正确)
(rear+1) MOD nfront
rear
front
rear+1front
(rear-1) MOD n
front
解析:循环队列为空:front == rear;
循环队列为满:(rear + 1) % n == front

14、执行()操作时,需要使用队列作为辅助存储空间。
正确答案: B 你的答案: B (正确)
查找哈希(hash)表
广度优先搜索图
先序(根)遍历二叉树
深度优先搜索图
解析:BFS广度优先算法需要队列的辅助,深度优先需要栈的辅助。

15、循环队列的出队操作为()。

正确答案: A 你的答案: A (正确)
sq.front=(sq.front+1)% maxsize;
sq.front=sq.front+1;
sq.rear=(sq.rear+1)% maxsize;
sq.rear=sq.rear+1;
解析:入队应该和队尾有关,

16、循环队列存储在数据A[0…m]中,则入队时的操作为______ 。

正确答案: D
rear=rear+1
rear=(rear+1)%(m-1)
rear=(rear+1)%m
rear=(rear+1)%(m+1)

17
用链接方式存储的队列,在进行删除运算时( )。
正确答案: D 你的答案: A (错误)
仅修改头指针
仅修改尾指针
头、尾指针都要修改
头、尾指针可能都要修改
解析:在有头结点的链队列的出队操作中,一般只需修改队头指针,但当原队列中只有一个结点时,该结点既是队头也是队尾,故删去此结点时亦需修改队尾指针,使其指向头结点,且删去此结点后队列变空。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

椒椒。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值