#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}LinkList;
typedef struct
{
LinkList *front;
LinkList *rear;
}LinkQueue;
int InQueue(LinkQueue *LQ)
{
LinkList *p=(LinkList*)malloc(sizeof(LinkList));
if(p==NULL)
{
printf("初始化失败!\n");
return 0;
}
p->next=NULL;
LQ->front=LQ->rear=p;
return 1;
}
int EmptyQueue(LinkQueue *LQ)
{
if(LQ->front==LQ->rear)
{
printf("队列空!\n");
return 1;
}
return 0;
}
int EnQueue(LinkQueue *LQ, int x)
{
LinkList *s=(LinkList *)malloc(sizeof(LinkList));
if(s==NULL)
{
printf("分配空间失败!\n");
return 0;
}
s->data=x;
s->next=NULL;
LQ->rear->next=s;
LQ->rear=s;
return 1;
}
int GetFront(LinkQueue *LQ, int *x)
{
if(EmptyQueue(LQ))
{
printf("队空!\n");
return 0;
}
*x=LQ->front->next->data;
return 1;
}
int OutQueue(LinkQueue *LQ, int *x)
{
LinkList *p;
if(EmptyQueue(LQ))
{
printf("队空!\n");
return 0;
}
p=LQ->front->next;
*x=p->data;
LQ->front->next=p->next;
if(LQ->front->next==NULL)
{
LQ->rear=LQ->front;
}
free(p);
return 1;
}
int main()
{
LinkQueue *Q;
Q=(LinkQueue *)malloc(sizeof(LinkQueue));
LinkList *p;
int n,m,x,fx;
InQueue(Q);
printf("请输入入队元素个数n:\n");
scanf("%d",&n);
printf("请输入入队元素:\n");
for(int i=1; i<=n; i++)
{
scanf("%d",&m);
EnQueue(Q, m);
}
GetFront(Q, &fx);
printf("队首元素:%d\n", fx);
printf("输出队列元素:\n");
for(p=Q->front->next; p!=NULL; p=p->next)
{
printf("%3d", p->data);
}
for(int i=1; i<=n; i++)
{
OutQueue(Q, &x);
printf("\n出队元素:%d\n", x);
}
system("pause");
return 0;
}
运行结果: