牺牲一个存储空间的循环队列实现方法
2020-03-29 19:07
127 查看
牺牲一个存储空间的循环队列实现方法
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,8 EnQueue(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"); else printf("队未满\n"); if(QueueEmpty(Q)) printf("队为空\n"); else printf("队不为空\n"); //将剩下的两个元素出队,然后判断队列是否为满,是否为空 DeQueue(Q,a); DeQueue(Q,b); if(QueueFull(Q)) printf("队已满\n"); else printf("队未满\n"); if(QueueEmpty(Q)) printf("队为空\n"); else printf("队不为空\n"); }
//终端输出结果 PS D:\VSCode\第三章 栈和队列\队列的顺序存储> cd "d:\VSCode\ ջͶ\е˳洢\" ; if ($?) { g++ ѭ.cpp -o ѭ } ; if ($?) { .\ѭ } a=2 b=4 x=6 num=2 队未满 队不为空 队未满 队为空
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 【c++】模拟实现循环队列 三种方法(标识、浪费一个空间、计数器)
- 数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
- 用c语言实现顺序队列(采用少用一个存储空间的方式解决假溢出问题)
- 如何实现一个循环队列
- 用两种方法来实现循环队列
- 两个域名共用一个空间的实现方法
- 循环队列的实现方法
- 一个简洁的循环队列实现
- 一个虚拟空间,不用子目录绑定功能实现建多站(一个空间绑定多个域名实现自动跳转的几种方法!)
- 队列的循环存储C实现
- 如何用两个栈模拟实现一个队列? 如果这两个堆栈的容量分别是m和n(m>n),你的方法能保证队列的最大容量是多少?
- 对一道“写一个算法实现字符串逆序存储,要求不另设串存储空间.”题目的总结!
- bsd strtok实现和windowstrtok实现 NetBSD的方法是节约了空间,牺牲了时间(它的时间复杂度为N2) 而微软的方法是节约了时间(它的时间复杂度为N),牺牲了空间(开了一
- 这里实现一个基于数组的线程安全的循环队列
- 如何实现一个循环队列
- 数据结构实现循环队列的两种方法
- 两种方法实现队满和队空的判断操作(循环队列)
- 给定两个排序的数组,其中A有足够空间容纳B,实现一个方法将B容纳进A并排序
- 循环队列比较好的实现方法-赋java代码