最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。
希望这些能提供给初学者一些参考。
在VC++6.0下可运行,当初还写了不少注释。
#include<stdio.h>
#include <MALLOC.H>
#define MaxSize 20
//定义数据结构
typedef struct
{
int elem[MaxSize];
int front,rear;
}CirQueue;
//初始化队列
CirQueue InitQueue()
{
CirQueue q;
q.front=q.rear=0;
return q;
}
//判队列空
int QueueEmpty(CirQueue q)
{
return(q.front==q.rear);
}
//入队列
void AddQueue(CirQueue *q, int e)
{
if (q->front == (q->rear+1)%MaxSize)
printf("\nFull!");
else
{
q->rear = (q->rear+1)%MaxSize;
q->elem[q->rear]=e;
}
}
//出队列
int DeleteQueue(CirQueue *q)
{
int e;
if(QueueEmpty(*q))
return 0;
else
{
e=q->elem[(q->front+1)%MaxSize];
q->front=(q->front+1)%MaxSize;
return e;
}
}
int main()
{
CirQueue *q;
int e, i=1;
q=(CirQueue*)malloc(sizeof(CirQueue));
*q=InitQueue();
printf("\n");
while (q->front!=(q->rear+1)%MaxSize)
{
AddQueue(q,i);
i++;
if (q->front!=(q->rear+1)%MaxSize)
{
AddQueue(q,i);
i++;
e=DeleteQueue(q);
printf("%d*%c",e,(e%5==0)?'\n':' ');
}
}
printf("\n");
while(!QueueEmpty(*q))
{
e=DeleteQueue(q);
printf("%d#",e);
}
printf("\n");
return 0;
}