前言
这些代码均为自己在郝斌老师教学的基础下自己的理解与补充,以及一些详细的解释
结构体使用
#include<stdio.h>
typedef struct Queue
{
int *pBase;
int front;
int rear;
}QUEUE;
初始化
void init (QUEUE *pQ)//初始化
{
pQ->pBase=(int*)malloc(sizeof(int)*6);
pQ->front=0;
pQ->rear=0;
}
入队
en_queue(QUEUE*pQ,int val)
{
if ( (pQ->rear + 1) % 6 == pQ->front )//如果rear移动到下一个元素就是front指向的元素,则该队列已满
return;
else
{
pQ->pBase[pQ->rear]=val;
pQ->rear=(pQ->rear+1)%6;//这样可以避免越界 ,进行循环利用
return;
}
}
出队
out_queue(QUEUE*pQ,int *pVal)
{
if(pQ->front==pQ->rear)//如果front和rear指向同一个元素,则可以知道该队列已经空了
{
printf("队列是空的\n");
return;
}
else
{
*pVal=pQ->pBase[pQ->front];
pQ->front=(pQ->front+1)%6;//先进先出
return;
}
}
遍历
void traverse (QUEUE*pQ)
{
int i =pQ->front;
while(i!=pQ->rear)
{
printf("%d",pQ->pBase[i]);//打印出来
i=(i+1)%6;//移动到下一个
}
printf("\n");
return;
}