牺牲一个存储空间的循环队列实现方法

1.定义循环队列的数据结构
2.初始化
3.入队操作
4.出队操作
5.读队头元素
6.判空操作
7.判满操作
8.计算当前队列中元素的个数
9.测试
10.终端输出结果

所用编译器:Visual Studio Code 1.42.1 C++环境

#include <stdio.h>
#define MaxSize 10
typedef int ElemType;
//定义循环队列的数据结构
typedef struct{ElemType data[MaxSize];int front,rear;
}SqQueue;
//初始化
void InitQueue(SqQueue &Q){Q.front=0;Q.rear=0;
}
//入队操作
bool EnQueue(SqQueue &Q,ElemType x){if((Q.rear+1)%MaxSize==Q.front)return false;Q.data[Q.rear]=x;Q.rear=(Q.rear+1)%MaxSize;return true;
}
//出队操作
bool DeQueue(SqQueue &Q,ElemType &x){if(Q.rear==Q.front)return false;x=Q.data[Q.front];Q.front=(Q.front+1)%MaxSize;return true;
}
//读对头元素
bool GetHead(SqQueue Q,ElemType &x){if(Q.rear==Q.front)return false;x=Q.data[Q.front];return true;
}
//判空操作
bool QueueEmpty(SqQueue Q){return(Q.rear==Q.front);
}
//判满操作
bool QueueFull(SqQueue Q){return((Q.rear+1)%MaxSize==Q.front);
}
//计算当前队列中元素的个数
void QueueNum(SqQueue Q,int &x){x=(Q.rear+MaxSize-Q.front)%MaxSize;
}
//测试
int main(){SqQueue Q;InitQueue(Q);ElemType a,b,x,num;//入队4个数,依次为2,4,6,8EnQueue(Q,2);EnQueue(Q,4);EnQueue(Q,6);EnQueue(Q,8);//出队2个数并打印 DeQueue(Q,a); DeQueue(Q,b);printf("a=%d\n",a); printf("b=%d\n",b);//读当前队头元素并打印GetHead(Q,x);printf("x=%d\n",x);//计算当前队列长度QueueNum(Q,num);printf("num=%d\n",num);//判断此时队列是否为满,是否为空if(QueueFull(Q))printf("队已满\n");elseprintf("队未满\n");if(QueueEmpty(Q))printf("队为空\n");elseprintf("队不为空\n");//将剩下的两个元素出队,然后判断队列是否为满,是否为空DeQueue(Q,a);DeQueue(Q,b);if(QueueFull(Q))printf("队已满\n");elseprintf("队未满\n");if(QueueEmpty(Q))printf("队为空\n");elseprintf("队不为空\n");
}
//终端输出结果
PS D:\VSCode\第三章 栈和队列\队列的顺序存储> cd "d:\VSCode\ ջͶ\е˳洢\" ; if ($?) { g++ ѭ.cpp -o ѭ } ; if ($?) { .\ѭ }
a=2
b=4
x=6
num=2
队未满
队不为空
队未满
队为空

牺牲一个存储空间的循环队列实现方法相关推荐

  1. 为什么循环队列要浪费一个存储空间

    为什么循环队列要浪费一个存储空间 什么是队列 队空和队满 队列的实现 数组实现队列 链表实现队列 假溢出问题 循环队列 队空和队满 实现循环队列 队列实战 两个栈实现队列 总结 什么是队列 队列和数组 ...

  2. Java数组实现循环队列的两种方法

    用java实现循环队列的方法: 1.增加一个属性size用来记录目前的元素个数.目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满. 2.数组中只存 ...

  3. c语言自动生成球队名称,C语言实现队(循环队列)

    之前用链表实现队,这里用数组实循环队列,今天又看了一下队列,发现少了计算队列长度的函数 队列的实现代码,牺牲一个元素存储空间 #include#define maxsize 10 typedef in ...

  4. 基于数组实现循环队列(基于Java实现)

    title: 基于数组实现循环队列(基于Java实现) tags: 数组 循环队列 基于数组实现循环队列的方法原理: 我们在用数组实现队列的时候,发现当tail = n时,就会有数据搬移的操作,这样一 ...

  5. 单片机的 FIFO循环队列实现

    转自:单片机的FIFO(先入先出)循环队列实现 // // 文件:config.h // #ifndef __CONFIG_H #define __CONFIG_H //这一段无需改动 //This ...

  6. 【数据结构】--队列之循环队列

    队列: 一种访问受限的线性表,只能在一端进行插入,另一端删除 先进先出(FIFO),队尾插入,队头删除 队列的分类:顺序队列.链表队列 顺序队列:底层的数据结构是内存连续的,基于数组实现队列的先进先出 ...

  7. 加油站问题的题解与分析——循环队列+合并

    1. 题目描述 问题来源及详细描述:https://leetcode-cn.com/problems/gas-station/ 描述:汽车的初始油量为0,油箱容量无限大,判断是否能够从某一加油站出发, ...

  8. 队列的定义、循环队列的顺序存储结构及链式存储结构

    文章目录 1 队列的定义 1.1 文字定义 1.2 代码定义 2 循环队列 2.1 循环队列的定义 2.2 循环队列的顺序存储结构 3 队列的链式存储结构 3.1 链队列的入队操作 3.2 链队列的出 ...

  9. 标志位法实现循环队列

    为了解决顺序队列假溢出的问题,提出了循环队列.使得内存的利用率得到了很大的提升.但是在判断循环队列空和满这两种状态任然存在问题,因为对于一个循环队列,不做任何判空和判满的机制.判空和判满的条件都是:q ...

最新文章

  1. MariaDB表表达式(2):CTE
  2. sql server端口_SQL Server端口概述
  3. ##CSP 201812-2 小明放学(C语言)(100分)
  4. python绘制玫瑰花代码视频_python turtle玫瑰花绘制效果和源代码
  5. 计算机考研804是什么意思,北邮通信考研专业课801和804的选择
  6. Devexpress 各版本中文语言包
  7. Python数据处理039:数据分析之csv文件
  8. 强化学习笔记 Ornstein-Uhlenbeck 噪声和DDPG
  9. IDEA必用插件 - 变量名中文转英文API注释翻译:Translation
  10. 数据仓库项目实例(马蜂窝数据仓库)
  11. 【转】给大家分享一下目前mlc颗粒的内存卡资料
  12. java计算机毕业设计响应式交友网站MyBatis+系统+LW文档+源码+调试部署
  13. win10不用密码直接登陆设置
  14. SpringBoot 存储图片 tomcat服务器存图片 数据库图片路径
  15. 【PyTorch基础】
  16. CSS、CSS3选择器
  17. 微商卖茶叶如何通过微博引流?要先熟悉并利用好微博自身这个平台
  18. 手把手教你通过solidworks模拟摩擦运动
  19. 鸟叔的linux私房菜+大数据(Hardoop/Spark/Hive) 电子书分享
  20. 彩色图片亮度放大后 色彩不失真的方法

热门文章

  1. npm安装依赖报错 unable to resolve dependency tree....
  2. 使用vue-wordcloud实现文字云/词云
  3. 虾皮shopee蓝海词怎么找?挖掘shopee蓝海词有哪些技巧?
  4. eap wifi 证书_用openssl为EAP-TLS生成证书(CA证书,服务器证书,用户证书)
  5. 微信辅助注册平台源码
  6. 17/10/2019 细胞死亡的十一种方式--转自解螺旋公众号
  7. iOS 设置自定义间距的文字下划线
  8. 天天背单词--的设计与实现(一)
  9. python 游戏按键精灵 PyDirectInput介绍
  10. JavaScript之赛车游戏