链队列的实现

目录

链队列由以下2个操作:入队算法和出队算法,创建2个函数,具体实现在下面:

#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define true 1
#define false 0
typedef struct Node
{
char data;
struct Node *next;
}LinkQueueNode;
typedef struct
{
LinkQueueNode *front;
    LinkQueueNode *rear;
}LinkQueue;
int EnQueue(LinkQueue *q,char x)
{
LinkQueueNode *p;
p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(p)
{
   p->data=x;
   p->next=NULL;
   q->rear->next=p;
   q->rear=p;
   return (true);
}
else
   return (false);

}
int Del_Q(LinkQueue *q,char *x)
{
LinkQueueNode *p;
p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(q->front==q->rear)
   return (false);
p=q->front->next;
q->front->next=p->next;
if(q->rear==p)
   q->rear=q->front;
*x=p->data;
free(p);
return (true);
}
main()
{
LinkQueue *Q;
Q=(LinkQueue *)malloc(sizeof(LinkQueue));
Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->rear=Q->front;
char x;
printf("输入入队的字符顺序:\n");
while((x=getchar())!='\n')
   EnQueue(Q,x);
printf("出队顺序:\n");
while(Del_Q(Q,&x))
{
   putchar(x);
}
printf("\n");
}