当前位置:网站首页>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
边栏推荐
- 解决computed属性与input的blur事件冲突问题
- Don't you know the usage scenario of the responsibility chain model?
- Leetcode exercise - 396 Rotation function
- Async void caused the program to crash
- ffmpeg安装遇错:nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
- like和regexp差别
- Async keyword
- January 1, 1990 is Monday. Define the function date_ to_ Week (year, month, day), which realizes the function of returning the day of the week after inputting the year, month and day, such as date_ to
- Fill in the next right node pointer II of each node [classical hierarchy traversal | regarded as linked list]
- On the day of entry, I cried (mushroom street was laid off and fought for seven months to win the offer)
猜你喜欢
eolink 如何助力远程办公
UML project example -- UML diagram description of tiktok
Introduction to distributed transaction Seata
Brute force of DVWA low -- > High
1-初识Go语言
Introduction to Arduino for esp8266 serial port function
nuxt项目:全局获取process.env信息
LeetCode162-寻找峰值-二分-数组
Swift protocol Association object resource name management multithreading GCD delay once
[untitled]
随机推荐
Advanced application of I / O multiplexing: Processing TCP and UDP services at the same time
多语言通信基础 06 go实现grpc的四种数据流模式实现
The win10 taskbar notification area icon is missing
raised exception class EAccexxViolation with ‘Access violation at address 45EFD5 in module 出错
Explanation and example application of the principle of logistic regression in machine learning
Sqlserver transaction and lock problem
Detailed comparison between asemi three-phase rectifier bridge and single-phase rectifier bridge
LeetCode153-寻找旋转排序数组中的最小值-数组-二分查找
Thinkphp5 + data large screen display effect
填充每个节点的下一个右侧节点指针 II [经典层次遍历 | 视为链表 ]
你還不知道責任鏈模式的使用場景嗎?
What is the effect of Zhongfu Jinshi wealth class 29800? Walk with professional investors to make investment easier
Redis主从同步
Swift Protocol 关联对象 资源名称管理 多线程GCD 延迟 once
epoll 的EPOLLONESHOT 事件———实例程序
Share 20 tips for ES6 that should not be missed
Don't you know the usage scenario of the responsibility chain model?
PCIe X1 插槽的主要用途是什么?
Resolve the conflict between computed attribute and input blur event
Comment eolink facilite le télétravail