队列
#include<stdio.h>
#include<stdlib.h>
typedef char elemtype;
typedef struct _queue{
elemtype data;
struct _queue *next;
}Queue;
typedef struct{
Queue *front;
Queue *rear;
}LinkQueue;
LinkQueue* InitQueue()
{
LinkQueue *q=(LinkQueue *)malloc(sizeof(LinkQueue));
Queue *p=(Queue *)malloc(sizeof(Queue));
p->next=NULL;
q->front=q->rear=p;
return q;
}
void InsertQueue(LinkQueue *q,elemtype x)
{
Queue *p=(Queue *)malloc(sizeof(Queue));
p->next=NULL;
p->data=x;
q->rear->next=p;
q->rear=p;
}
int DeleteQueue(LinkQueue *q,elemtype *x)
{
if(q->front==q->rear)
{
printf("the Queue is NULL\n");
return 0;
}
Queue *p=q->front->next;
*x=p->data;
q->front->next=p->next;
if(q->rear==p)
q->rear=q->front;
free(p);
return 1;
}
void clean_up(LinkQueue *q)
{
while(q->front)
{
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
}
}
void print(LinkQueue *q)
{
Queue *p=q->front->next;
while(1)
{
if(p==NULL)
break;
printf("%c--",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
LinkQueue *q;
q=InitQueue();
char b;
while(1)
{
scanf("%c",&b);
if(b=='#')
{
break;
}
InsertQueue(q,b);
}
print(q);
while(1)
{
if(!DeleteQueue(q,&b))
{
printf("true");
break;
}
printf("%c--",b);
}
clean_up(q);
}