当前位置:网站首页>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
边栏推荐
- [jz46 translate numbers into strings]
- 3、 Gradient descent solution θ
- Explanation and example application of the principle of logistic regression in machine learning
- How to write the keywords in the cover and title? As we media, why is there no video playback
- One of the advanced applications of I / O reuse: non blocking connect -- implemented using select (or poll)
- How does eolink help telecommuting
- Bingbing learning notes: take you step by step to realize the sequence table
- [untitled]
- Fill in the next right node pointer II of each node [classical hierarchy traversal | regarded as linked list]
- Is asemi ultrafast recovery diode interchangeable with Schottky diode
猜你喜欢
LeetCode 练习——396. 旋转函数
分享 20 个不容错过的 ES6 的技巧
Vous ne connaissez pas encore les scénarios d'utilisation du modèle de chaîne de responsabilité?
thinkphp5+数据大屏展示效果
LeetCode153-寻找旋转排序数组中的最小值-数组-二分查找
How to design a good API interface?
nuxt项目:全局获取process.env信息
3、 Gradient descent solution θ
What is the role of the full connection layer?
What is the main purpose of PCIe X1 slot?
随机推荐
Model location setting in GIS data processing -cesium
Frame synchronization implementation
Comment eolink facilite le télétravail
PCIe X1 插槽的主要用途是什么?
Leetcode exercise - 396 Rotation function
QT Detailed explanation of pro file
Provided by Chengdu control panel design_ It's detailed_ Introduction to the definition, compilation and quotation of single chip microcomputer program header file
填充每个节点的下一个右侧节点指针 II [经典层次遍历 | 视为链表 ]
Set up an AI team in the game world and start the super parametric multi-agent "chaos fight"
go基础 反射
2-Go变量操作
Pnpm installation and use
Difference between like and regexp
Advanced application of I / O multiplexing: Processing TCP and UDP services at the same time
One of the advanced applications of I / O reuse: non blocking connect -- implemented using select (or poll)
Ffmpeg installation error: NASM / yasm not found or too old Use --disable-x86asm for a clipped build
UML project example -- UML diagram description of tiktok
Introduction to dirty reading, unrepeatable reading and phantom reading
When splicing HQL, the new field does not appear in the construction method
[jz46 translate numbers into strings]