#include <stdio.h>
#include <stdlib.h>
#define ElemType int
typedef struct LinkNode // 链式队列结点
{
ElemType data;
struct LinkNode *next;
} LinkNode;
typedef struct // 链式队列
{
LinkNode *front, *rear; // 队列的队头和队列指针
} LinkQueue;
// 初始化
void InitQueue(LinkQueue &Q) // 初始化带头结点的链队列
{
Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode)); // 建立头结点
Q.front->next = NULL; // 初始为空
}
// 判断队空
bool IsEmpty(LinkQueue Q)
{
if (Q.front == Q.rear)
return true;
else
return false;
}
// 入队
void EnQueue(LinkQueue &Q, ElemType x)
{
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode)); // 创建新结点
s->data = x;
s->next = NULL;
Q.rear->next = s; // 插入链尾
Q.rear = s; // 修改尾指针
}
// 出队
bool DeQueue(LinkQueue &Q, ElemType &x)
{
if (Q.front == Q.rear)
return false; // 空队
LinkNode *p = Q.front->next;
x = p->data;
Q.front->next = p->next;
if (Q.rear == p)
Q.rear = Q.front; // 若原队列中只有一个结点,删除后变空
free(p);
return true;
}
int main()
{
return 0;
}