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

循环队列知识点及习题

目录

一、知识点

二、练习题


一、知识点

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.dtcms.com/a/18870.html

相关文章:

  • 1-8 gitee码云的注册与使用
  • 软件测试之黑盒测试与白盒测试
  • android设置添加设备QR码信息
  • 用大模型学大模型05-线性回归
  • 全面理解-c++中的内存布局
  • visutal studio 2022使用qcustomplot基础教程
  • ROS2 话题通信
  • 算法题(68):路径总和
  • 算法244(力扣136)反转字符串
  • mysql和minio
  • C语言中的文件
  • YOLOV8的学习记录(三) 训练各种模型所使用的数据格式区别
  • Farewell Go,Hello AI:是时候说再见了
  • AWS Fargate 部署流程图及说明
  • 劳力士(Rolex):蚝式恒动(Oyster Perpetual),潜航者(Submariner)和宇宙计型迪通拿(Daytona)中英双语
  • Vue.js 配置 Babel、Webpack 和 ESLint
  • 矩阵碰一碰发视频技术开发全解析,支持OEM
  • 抖去推与超级编导矩阵系统技术深度对比,矩阵系统支持OEM
  • 【Qt】之【Linux】linux下实现开机自启Qt应用程序
  • Golang面试题一
  • promise捕获错误的方式
  • 网络安全-攻击流程-传输层
  • OceanBase使用ob-loader-dumper导出表报ORA-00600
  • 【DeepSeek】本地PC部署和运行DeepSeek-R1-70b
  • 人工智能知识架构详解
  • 自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)
  • Leetcode 146 LRU缓存 的三种解法
  • 基于Ollama安装deepseek-r1模型搭建本地知识库(Dify、MaxKb、Open-WebUi、AnythingLLM)
  • 算法1-1 玩具谜题
  • FreeBSD系统使用pyenv安装不同版本python,比如python3.12