#include <stdio.h>
#include <cstdlib>
#define MaxSize 10
typedef struct {
int data[MaxSize];
int front,rear;
}SqQueue;
void InitSqQueue(SqQueue &q){
q.front=0;
q.rear=0;
}
bool Empty(SqQueue &q){
if(q.rear==q.front)
return false;
return true;
}
bool Full(SqQueue &q){
if((q.rear+1)%MaxSize==q.front)
return false;
return true;
}
bool EnQueue(SqQueue &q,int e){
if(Full(q)){
q.data[q.rear]=e;
q.rear=(q.rear+1)%MaxSize;
return true;
}
return false;
}
bool DeQueue(SqQueue &q,int &x){
if(Empty(q)){
x=q.data[q.front];
q.front=(q.front+1)%MaxSize;
return true;
}
return false;
}
int GetHead(SqQueue q,int &x){
if(Empty(q)){
x=q.data[q.front];
}
}
int main() {
SqQueue q;
int x=0;
InitSqQueue(q);
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
DeQueue(q,x);
printf_s("%d",x);
DeQueue(q,x);
printf_s("%d",x);
DeQueue(q,x);
printf_s("%d",x);
return 0;
}
3.2队列的顺序存储
于 2021-07-11 00:31:51 首次发布
本文详细介绍了如何使用C++定义并实现一个线程安全的队列结构,包括初始化、判断队列空满、入队和出队操作。通过结构体和宏定义MaxSize,简化了数组管理,并展示了在多线程环境下如何保证队列操作的正确性。
摘要由CSDN通过智能技术生成