#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef char ElemType;
typedef int State;
typedef struct QNode
{
ElemType data;
struct QNode *next;
} QNobe, *QueuePrt;
typedef struct
{
QueuePrt front, rear;
} LinkQueue;
State initQueue(LinkQueue *Q);
State destroyQueue(LinkQueue *Q);
State enQueue(LinkQueue *Q, ElemType e);
State deQueue(LinkQueue *Q, ElemType *e);
State printQueue(LinkQueue Q);
State initQueue(LinkQueue *Q)
{
QueuePrt p;
p = (QueuePrt)malloc(sizeof(QNobe));
if (!p)
return ERROR;
p->next = NULL;
Q->front = p;
Q->rear = p;
return OK;
}
State enQueue(LinkQueue *Q, ElemType e)
{
QueuePrt p;
p = (QueuePrt)malloc(sizeof(QNobe));
if (!p)
return ERROR;
p->data = e;
p->next = NULL;
Q->rear->next = p;
Q->rear = p;
return OK;
}
State deQueue(LinkQueue *Q, ElemType *e)
{
QueuePrt p_free = NULL;
if (!(p_free = Q->front->next))
return ERROR;
*e = Q->front->next->data;
Q->front->next = Q->front->next->next;
free(p_free);
return OK;
}
State destroyQueue(LinkQueue *Q)
{
QueuePrt p_free = NULL;
QueuePrt p = Q->front;
while (p)
{
p_free = p;
p = p->next;
free(p_free);
}
Q->front = Q->rear = NULL;
return OK;
}
State printQueue(LinkQueue Q)
{
QueuePrt p = Q.front->next;
while (p)
{
putchar(p->data);
p = p->next;
}
return OK;
}
int main(void)
{
LinkQueue queue;
char str[32] = "I LOVE FishC !", e;
initQueue(&queue);
for (int i = 0; str[i] != '\0'; i++)
{
enQueue(&queue, str[i]);
}
deQueue(&queue, &e);
printf("删除了 %c\n", e);
printQueue(queue);
destroyQueue(&queue);
return 0;
}