#include
#include
#ifndef QUEUE_SIZE
#define QUEUE_SIZE 12
#endif
typedef struct LinkQueue
{
int front;
int rear;
int data[QUEUE_SIZE];
}LinkQueue;
void QueueInit(LinkQueue *Q)
{
Q->front = 0;
Q->rear = 1;
}
int QueueFull(LinkQueue *Q)
{
return (Q->rear+1)%QUEUE_SIZE==Q->front;
}
int QueueEmpty(LinkQueue *Q)
{
return (Q->front+1)%QUEUE_SIZE==Q->rear;
}
void EnQueue(LinkQueue *Q, int value)
{
if(QueueFull(Q))
printf("queue is full, your data will be covered!\n");
Q->data[Q->rear] = value;
Q->rear = (Q->rear+1)%QUEUE_SIZE;
}
void DeQueue(LinkQueue *Q)
{
if(QueueEmpty(Q))
printf("queue is empty!");
Q->data[Q->front]=0;
Q->front = (Q->front+1)%QUEUE_SIZE;
}
int QueueFront(LinkQueue *Q)
{
if(!QueueEmpty(Q))
return Q->data[Q->front];
}
void PrintLinkQueue(LinkQueue *Q)
{
int i;
for(i=Q->front; irear; i++)
printf("%4d",Q->data[i]);
printf("\n");
}
int main(void)
{
LinkQueue *Q=(LinkQueue *)malloc(sizeof(LinkQueue));
int i;
for(i=1; i<=20; i++)
EnQueue(Q,i);
PrintLinkQueue(Q);
#if 0
QueueInit(Q);
EnQueue(Q,1);
EnQueue(Q,2);
EnQueue(Q,3);
EnQueue(Q,4);
EnQueue(Q,5);
printf("打印这个队列:\n");
PrintLinkQueue(Q);
printf("插入二个元素6,7后的队列:\n");
EnQueue(Q,6);
EnQueue(Q,7);
PrintLinkQueue(Q);
printf("删除两个元素后的队列为:\n");
DeQueue(Q);
DeQueue(Q);
PrintLinkQueue(Q);
#endif
return 0;
阅读(1266) | 评论(0) | 转发(0) |