33,008
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;
typedef struct
{
linklist *front,*rear;
}linkqueue;
void SETNULL(linkqueue *&q)//置队列空
{
q=(linkqueue *)malloc(sizeof(linkqueue));
q->front=NULL;
q->rear=NULL;
}
int EMPTY(linkqueue *q)//判队列空
{
if(q==NULL || q->front==NULL)
return 1;
else
return 0;
}
void ENQUEUE(linkqueue *q,datatype x)//入队列
{
if (q== NULL)
return;
linklist *s = (linklist *)malloc(sizeof(linklist));
s->next = NULL;
s->data = x;
if (q->rear == NULL)
{
q->front = s;
q->rear = s;
}
else
{
q->rear->next = s;
q->rear = s;
}
}
datatype DEQUEUE(linkqueue *q)//出队列
{
linklist *s;
if(EMPTY(q))
{
printf("queue is empty.\n");
return 0;
}
else
{
s=q->front;
datatype tmp = s->data;
q->front=s->next;
free(s);
return tmp;
}
}
datatype FRONT(linkqueue *q)
{
if(EMPTY(q))
{
printf("queue is empty.\n");
return 0;
}
else
return q->front->data;
}
void main()
{
linkqueue *q;
datatype x=1,y=2,z=3;
SETNULL(q);
ENQUEUE(q,x);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,y);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,z);
printf("%d enqueue\n",q->rear->data);
x=DEQUEUE(q);
printf("%d dequeue\n",x);
y=DEQUEUE(q);
printf("%d dequeue\n",y);
z=DEQUEUE(q);
printf("%d dequeue\n",z);
free(q);
}