链队列,即队列的链式存储结构,它是仅在表头删除和表尾插入的单链表,因此一个链队列需要设置两个分别指示队头元素和队尾元素的指针,为了操作方便,给链队列添加一个头结点,并令队头指针指向头结点,由此,空的链队列的判断条件就是队头指针和队尾指针均指向头结点。
链队列的类型描述:
//链队列类型描述
typedef int QElemType;
typedef struct node{
QElemType data;
struct node *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front; //队头指针
QueuePtr rear; //队尾指针
}LinkQueue;
基本操作:
1. 链队列的初始化(带头结点)Init_LinkQueue(LinkQueue *Q)
//链队列的初始化(带头结点)
void Init_LinkQueue(LinkQueue *Q){
QueuePtr head = (QueuePtr)malloc(sizeof(QNode));
if(!head)
exit(OVERFLOW);
head->next = NULL;
Q->front = Q->rear = head;
}
2. 销毁链队列Destroy_LinkQueue(LinkQueue *Q)
//销毁链队列
void Destroy_LinkQueue(LinkQueue *Q){
//从