参考王道《2023年数据结构考研复习指导》
#include <iostream>
#define MaxSize 10
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int front, rear; // 队头指针与队尾指针
} SqQueue;
// 初始化队列
void InitQueue(SqQueue& Q) {
Q.rear = Q.front = 0; // 初始时 队头、队尾指针指向0
}
// 判断队列是否为空
bool QueueEmpty(SqQueue Q) {
if (Q.rear == Q.front)
return true;
else
return false;
}
// 入队(循环队列,牺牲一个单元来区分队空和队满)
bool EnQueue(SqQueue& Q, ElemType x) {
if ((Q.rear + 1) % MaxSize == Q.front) // 队满则报错
return false;
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MaxSize;
return true;
}
// 出队
bool DeQueue(SqQueue& Q, ElemType &x) {
if (Q.front == Q.rear)
return false;
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxSize;
return true;
}
int main() {
SqQueue Q;
InitQueue(Q);
std::cout << QueueEmpty(Q) << std::endl;
for (int i = 1; i <= 20; ++i) {
EnQueue(Q, i);
}
int x = -1;
while (!QueueEmpty(Q)) {
DeQueue(Q, x);
std::cout << x << std::endl;
}
system("pause");
return 0;
}