#include
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef struct N0de
{int data;
struct N0de *next;
}N0de,*QueuePtr;
typedef struct
{QueuePtr rear;
}LinkQueue;
int InintQueue(LinkQueue &Q)
{ Q.rear=(QueuePtr)malloc(sizeof(N0de));
if(!Q.rear) return(OVERFLOW);
Q.rear->next=Q.rear;
return OK;
}
int EnQueue(LinkQueue &Q,int e)
{QueuePtr p;
p=(QueuePtr)malloc(sizeof(N0de));
p->data=e;
p->next=Q.rear->next;
Q.rear->next=p;
Q.rear=p;
return OK;
}
int DeQueue(LinkQueue &Q,int &e)
{ QueuePtr p;
if(Q.rear->next==Q.rear)
return 0;
p=Q.rear->next->next;
e=p->data;
Q.rear->next->next=p->next;
if(Q.rear==p)
{
Q.rear->next=Q.rear->next->next;
Q.rear=Q.rear->next;
}
free(p);
return OK;
}
void main()
{LinkQueue Q;
int i,e,n;
InintQueue(Q);
printf("input the number of the data:");
scanf("%d",&n);
for(i=0;i
scanf("%d",&e);
EnQueue(Q,e);
}
printf("input the number of the datas to out:");
scanf("%d",&n);
for(i=0;i
printf("output first data in the queue:");
DeQueue(Q,e);
printf("%d\n",e);
}
}
调试通过