https://www.bilibili.com/video/av6159200?p=38
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
class queue
{
int * pBase;
int front;
int rear;
int length;
public:
queue(int ii) :length(ii)
{
pBase = (int *)malloc(sizeof(int)*length);
rear = 0;
front = 0;
}
bool is_empty()
{
if (rear == front)
return true;
else
return false;
}
bool is_full()
{
if ((rear + 1) % length == front)
return true;
else
return false;
}
bool en_queue(int val)
{
if (is_full()) {
printf("队列已满!!\n");
return false;
}
else {
pBase[rear] = val;
rear = (rear + 1) % length;
return true;
}
}
bool out_queue()
{
if (is_empty()) {
printf("队列已空!!\n");
return false;
}
else {
front = (front + 1) % length;
}
}
bool out_queue(int &val)
{
if (is_empty()) {
printf("队列已空!!\n");
return false;
}
else {
val = pBase[front];
front = (front + 1) % length;
}
}
void traverse_queue()
{
int q = front;
while (q != rear) {
printf("%d ", pBase[q]);
q = (q + 1) % length;
}
printf("\n");
}
};
int main()
{
queue q(6);
q.en_queue(1);
q.en_queue(2);
q.en_queue(3);
q.en_queue(4);
q.en_queue(5);
q.out_queue();
q.en_queue(6);
q.en_queue(7);
q.en_queue(8);
q.traverse_queue();
return 0;
}