为了能更快速,更准确的写出一个队列,提炼出用数组实现队列的几个要素:
1.初始化
1.1队列数组长度
一般用宏的方式,比如
#define MAX_QUEUE_SIZE 100
1.2队列数组
int q[MAX_QUEUE_SIZE] = {0};
1.3首尾指针
首指针为front,尾指针为rear。这里由于个人习惯,将front和rear都初始化为0,这会影响到后面判断空/满的操作。
int front = 0;
int rear = 0;
2.接口函数
2.1队列判满
bool IsQueueFull(int rear, int front) {
if ((rear + 1) % MAX_QUEUE_SIZE == front) {
return true;
} else {
return false;
}
}
2.2队列判空
bool IsQueueEmpty(int rear, int front) {
if (rear == front) {
return true;
} else {
return false;
}
}
2.3队尾插入
void EnQueue (int val, int rear, int front, int *queue) {
if (IsQueueFull(rear, front)) {
return;
}
queue[rear] = val;
rear = (rear + 1) % MAX_QUEUE_SIZE;
return;
}
2.4队首弹出
int DeQueue(int rear, int front, int *queue) {
if (IsQueueEmpty(rear, front)) {
return -1;
}
int pop = queue[front];
front = (front + 1) % MAX_QUEUE_SIZE;
return pop;
}