当前位置: 首页 > article >正文

循环队列知识点及习题

目录

一、知识点

二、练习题


一、知识点

1队列是操作受限的线性表。特性是先进先出,后进后出,比如一个队列的入队顺序是1,2,3,4,那么出队的输出顺序就是1,2,3,4。

2循环队列就是一个环状的空间,有队首指针front和队尾指针rear,按照顺时针的顺序出入队。

当有元素入队,rear指针进1,front指针不变;当有元素出队,rear指针不变,front指针进1。当队里没有元素,front==rear。

3区分队空还是队满的方法

牺牲一个单元。约定队首指针在队尾指针的下一位置作为队满标志

那么(Q.rear+1)%Maxsize==Q.front

%Maxsize这里取模的原因是这是一个循环队列,rear+1大于M的话理解为新的循环

二、练习题

1已知循环队列的存储空间为数组A[21],front指向队首元素的前一个位置,rear指向队尾元素,假设当前front和rear的值分别为8和3,求该队列的长度。

思路:利用公式(rear-front+Maxsize)%Maxsize

(3-8+21)%21=16

2若用数组A[0...5]实现循环队列,且当前rear和front的值分别为1和5,当从队列中删除一个元素再加入两个元素后,求rear和front的值。

思路:删除元素是出队,front指针进1,rear不变;加入元素是入队,rear指针进1,front不变。

根据题干,rear=1,加入2个元素,rear进2,rear=1+2=3

front=5,删除一个元素,front进1,因为这是循环队列,5后面是0,所以front=0

3假设输入序列为1,2,3,4,5,利用两个队列进行出入队操作,不可能输出的序列是

A. 1,2,3,4,5

B. 5,2,3,4,1

C. 1,2,3,4,5

D. 4,1,5,2,3

思路:排除法来做。设两个队列为Q和S,如下图分配

答案选B


http://www.kler.cn/a/547450.html

相关文章:

  • C++从入门到实战(四)C++引用与inline,nullptr
  • 青少年编程与数学 02-009 Django 5 Web 编程 13课题、URL分发
  • 【Java 面试 八股文】Spring Cloud 篇
  • 【认证授权FAQ】SSL/TLS证书过期导致的CLS认证失败
  • 联想笔记本电脑摄像头灯亮,但没有画面怎么解决,
  • Python的那些事第二十一篇:Python Web开发的“秘密武器”Flask
  • MATLAB图像处理:图像特征概念及提取方法HOG、SIFT
  • 将Sqlite3数据库挂在内存上处理
  • 老游戏回顾:GOWpsp
  • 【网络安全 | 漏洞挖掘】后端接受非预期参数的故事
  • pgAdmin 4 启动 PSQL Tool
  • export关键字
  • 基于深度学习的消费物联网中安全音乐流量传输方法
  • ROS2服务通信与通信接口
  • 嵌入式 Linux 驱动开发:点灯大法
  • 【Java】ArrayList与LinkedList的性能对比深度解析
  • 探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!
  • 石子合并
  • 深入探究Linux树状目录结构
  • Ae:常见的光照控件和材质控件