【循环队列】队列的顺序存储结构
代码
#include <iostream>
#include <cstdio>
using namespace std;
#define OK 1
#define ERROR 0
typedef int status;
typedef int QElemType;
#define MAXQSIZE 100
typedef struct{
QElemType * base;
int front;
int rear;
}SqQueue;
status InitQueue(SqQueue &q){
q.base = (QElemType * )malloc(sizeof(QElemType));
q.front = q.rear = 0;
return OK;
}
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;
}
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;
}
status QueueEmpty(SqQueue q){
if (q.front != q.rear) return ERROR;
return OK;
}
int main(){
SqQueue q;
InitQueue(q);
int n;
printf("请输入入队数字个数:\n");
scanf("%d", &n);
printf("请输入%d个数字:\n", n);
QElemType tmp;
for (int i = 1; i <= n; i++){
scanf("%d", &tmp);
EnQueue(q, tmp);
}
printf("%d个数字已入队完毕\n", n);
printf("请输出出队数字个数:(<=%d)\n", n);
scanf("%d", &n);
QElemType e;
for (int i = 1; i <= n; i++){
DeQueue(q, e);
printf("%d ", e);
}
printf("\n%d个数字已出队完毕\n", n);
return 0;
}