#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//【1】队列数据结构
typedef struct queue
{
int* pbase; // 注意是int *
int rear=0;
int front=0;
}QUEUE;
void init(QUEUE* pq);
bool impty(QUEUE *pq);
bool push_q(QUEUE* pq, int val);
void travel(QUEUE* pq);
int main()
{
//【2】定义队列
QUEUE Q;
//【3】初始化队列
int val;
init(&Q);
//【4】存值
push_q(&Q,5);
push_q(&Q,4);
push_q(&Q, 3);
push_q(&Q, 2);
push_q(&Q, 1);
//push_q(&Q,4);
//【5】遍历
travel(&Q);
return 0;
}
void init(QUEUE* pq)
{
//【3.1】定义一个数组
pq->pbase = (int *)malloc(sizeof(int)*6); // 注意是直接给了pbase
//【3.2】数组的第一个
//pq->pbase = NULL;
pq->front = 0;
//【3.3】数组的最后
pq->rear = 0;//这里应该写rear,不是pbase啊
}
//【】
bool impty(QUEUE *pq)
{
//【】是否满了
if ((pq->rear + 1) % 6 == pq->front)
{
return true;
}
else
return false;
}
bool push_q(QUEUE* pq,int val)
{
//【4.1】变量给到pbase 指向的rear
pq->pbase[pq->rear] = val;
//【4.2】rear移动 r=(r+1)%6
pq->rear = (pq->rear+1) % 6;
return false;
}
void travel(QUEUE* pq)//相当于出队
{
//【5.1】
int i = pq->front;
//【5.2】没出完就循环
while (i!=pq->rear)
{
printf("\n");
//【5.3】
printf("%d",pq->pbase[i]);
//【5.4】出队的f移动方式
i = (i+1)%6;
printf("i=%d",i);
}
printf("\n");
return;
}