循环队列的入队与出队
#include <iostream>
#define MaxSize 10
using namespace std;
typedef struct Node {
int data[MaxSize];
int front, rear; //队首,队尾指针
} SQueue;
SQueue *init_queue();
int En_queue(SQueue &qu, int x);
int De_queue(SQueue &qu, int &x);
int main() {
auto SQ = new SQueue;
SQ = init_queue();
int data;
for (int i = 0; i < 5; ++i) {
cin >> data;
En_queue(*SQ, data);
}
int x;
De_queue(*SQ, x);
cout<<x;
return 0;
}
SQueue *init_queue() {
auto SQ = new SQueue;
SQ->front = 0;
SQ->rear = SQ->front;
return SQ;
};
int En_queue(SQueue &qu, int x) {
if (qu.front == ((qu.rear + 1) % MaxSize))
return 0;
else {
qu.data[qu.rear] = x;
qu.rear = (qu.rear + 1) % MaxSize; //为了实现循环:例如当rear+1=MaxSize+2时,
// 这样操作就可以是的盖度列的rear指向前面了;
return 1;
}
}
int De_queue(SQueue &qu, int &x) {
if (qu.rear == qu.front)
return 0;
else {
x = qu.data[qu.front];
qu.front = (qu.front + 1) % MaxSize;
return x;
}
}