#include <stdio.h>
#include <stdlib.h>
#define overflow -2
#define ok 1
#define error -1
typedef struct QNode {
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(Q.front) return overflow;
Q.front->next=NULL;
return ok;
}
int EnQueue(LinkQueue &Q,int e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p) return overflow;
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return ok;
}
int DeQueue(LinkQueue &Q,int e)
{
QueuePtr p;
if(Q.front==Q.rear)
return error;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return ok;
}
void Print(LinkQueue *q)
{
QueuePtr p;
if(q->front == q->rear)
return;
p = q->front->next;
while(p != q->rear)
{
printf("%d ",p->data);
p = p->next;
}
printf("%d",p->data);
printf("\n");
}
void main()
{
int x,i;
LinkQueue Q;
InitQueue(Q);
for(i=0;i<100;i++)
{
scanf("%d",&x);
EnQueue(Q,x);
}
for(i=0;i<100;i++)
{
DeQueue(Q,x);
Print(&Q);
}
}
链式队列的实现
最新推荐文章于 2024-05-30 17:46:46 发布