当前位置:网站首页>Basic operation of circular queue (Experiment)
Basic operation of circular queue (Experiment)
2022-04-23 15:03:00 【White folding fan y】
Basic operation of circular queue ( Abridged edition )
Preface
The following basic operations of circular queue are programmed : Build a queue , Take the team leader element , The team , Out of the team .
Want to know the detailed explanation of circular queue Please order me
️ Personal home page : Collection and attention , Never get lost ~ ️
Now let's take a look at how to realize it
One 、 Code implementation
#include <iostream>
using namespace std;
#define ERROR -1
#define OK 1
typedef int QElemType;
typedef int Status;
// Storage structure of circular queue
#define MAXQSIZE 100 // Maximum queue length
typedef struct
{
QElemType *base; // Used to dynamically allocate storage space
int front; // Team leader index
int rear; // End of team index
} SqQueue;
// initialization
void InitQueue (SqQueue &Q)
{
// Construct an empty queue
Q.base =new QElemType[MAXQSIZE];
Q.front=Q.rear=0;
}
// Destroy queue
void DestroyQueue(SqQueue &Q)
{
if(Q.base)
free(Q.base);
Q.base = NULL;
Q.front = Q.rear = 0;
}
// Clear queue
void ClearQueue(SqQueue &Q)
{
Q.front=Q.rear=0;
}
// Find the length
int QueueLength (SqQueue Q)
{
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
// Sentenced to empty
bool QueueEmpty (SqQueue Q)
{
return (Q.front==Q.rear);
}
// Find the team head element
Status GetHead (SqQueue Q, QElemType &e)
{
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
return OK;
}
// Loop queue in
Status EnQueue(SqQueue &Q,QElemType e)
{
if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;
Q.base[Q.rear]=e;
Q.rear = (Q.rear+1) % MAXQSIZE;
return OK;
}
// Loop queue out
Status DeQueue (SqQueue &Q,QElemType &e)
{
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1) % MAXQSIZE;
return OK;
}
// Traversal causes the queue to display
void DisplayQueue(SqQueue Q)
{
int i=Q.front;
while(Q.front!=Q.rear && (i+MAXQSIZE) % MAXQSIZE != Q.rear)
{
cout<<Q.base[i]<<endl;
i++;
}
}
void show_help()
{
cout<<"******* Data Structure ******"<<endl;
cout<<"1---- Empty the circular queue "<<endl;
cout<<"2---- Determine whether the circular queue is empty "<<endl;
cout<<"3---- Find the length of the loop queue "<<endl;
cout<<"4---- Take the team leader element "<<endl;
cout<<"5---- The team "<<endl;
cout<<"6---- Out of the team "<<endl;
cout<<"7---- Show queue "<<endl;
cout<<" sign out , Input 0"<<endl;
}
int main()
{
char operate_code;
show_help();
SqQueue Q;
InitQueue(Q);
QElemType e;
int i;
while(1)
{
cout<<" Please enter the operation code :";
cin>>operate_code;
if(operate_code=='1')
{
cout<<"The queue has been cleared."<<endl;
ClearQueue(Q);
}
else if (operate_code=='2')
{
if(QueueEmpty(Q))
cout<<"The queue is empty."<<endl;
else
cout<<"The queue is not empty."<<endl;
}
else if (operate_code=='3')
{
cout<<"The length of queue is:"<<QueueLength(Q)<<endl;
}
else if (operate_code=='4')
{
cout<<" The team leader element is :"<<endl;
if(GetHead(Q,e) == 1) cout<<e<<endl;
else cout <<"error"<<endl;
}
else if (operate_code=='5')
{
cout<<" Please enter the number of you want to join the team :"<<endl;
cin>>e;
EnQueue(Q,e);
}
else if (operate_code=='6')
{
cout<<" The outgoing element is :"<<endl;
if(DeQueue(Q,e)) cout<<e<<endl;
}
else if (operate_code=='7')
{
cout<<"The contents of the queue are:"<<endl;
DisplayQueue(Q);
}
else if (operate_code=='0')
{
break;
}
else
{
cout<<"\n Opcode error !!!"<<endl;
show_help();
}
}
// Call the destroy stack function
DestroyQueue(Q);
return 0;
}
Two 、 Running results
summary
This paper is used to introduce the code implementation process and running result example of circular queue in data structure . Displays the initialization of the circular queue in a menu style 、 Empty 、 The destruction 、 Find the length 、 Find the team head element 、 Sentenced to empty 、 The team 、 Out of the queue and traverse the queue to display .
版权声明
本文为[White folding fan y]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231410400529.html
边栏推荐
- Swift Protocol 关联对象 资源名称管理 多线程GCD 延迟 once
- C语言超全学习路线(收藏让你少走弯路)
- Practice of unified storage technology of oppo data Lake
- 1 - first knowledge of go language
- Leetcode167 - sum of two numbers II - double pointer - bisection - array - Search
- Flink datastream type system typeinformation
- Detailed analysis of SQL combat of Niuke database (26-30)
- OC to swift conditional compilation, marking, macro, log, version detection, expiration prompt
- UML project example -- UML diagram description of tiktok
- 封面和标题中的关键词怎么写?做自媒体为什么视频没有播放量
猜你喜欢
分享 20 个不容错过的 ES6 的技巧
UML学习_day2
Leetcode exercise - 396 Rotation function
Role of asemi rectifier module mdq100-16 in intelligent switching power supply
[untitled]
capacitance
nuxt项目:全局获取process.env信息
我的 Raspberry Pi Zero 2W 折腾笔记,记录一些遇到的问题和解决办法
win10 任务栏通知区图标不见了
Share 20 tips for ES6 that should not be missed
随机推荐
What is the effect of Zhongfu Jinshi wealth class 29800? Walk with professional investors to make investment easier
JS - implémenter la fonction de copie par clic
Lotus DB design and Implementation - 1 Basic Concepts
SQL中HAVING和WHERE的区别
js——实现点击复制功能
Advanced application of I / O multiplexing: Processing TCP and UDP services at the same time
每日一题-LeetCode396-旋转函数-递推
剑指 Offer II 019. 最多删除一个字符得到回文(简单)
Using MATLAB programming to realize the steepest descent method to solve unconstrained optimization problems
分享 20 个不容错过的 ES6 的技巧
[proteus simulation] automatic range (range < 10V) switching digital voltmeter
Leetcode149 - maximum number of points on a line - Math - hash table
8.5 concise implementation of cyclic neural network
在游戏世界组建一支AI团队,超参数的多智能体「大乱斗」开赛
Set onedrive or Google drive as a drawing bed in upic for free
22年了你还不知道文件包含漏洞?
Select receives both normal data and out of band data
LeetCode165-比较版本号-双指针-字符串
Explanation and example application of the principle of logistic regression in machine learning
Borui data and F5 jointly build the full data chain DNA of financial technology from code to user