链队列
链队列与链表相似,不同的是它具有对列的运算方法,存储结构和链表相同,下面是其结构示意图:
这里的*Q类似于链表的头节点*head;它包含两个指向队列节点的指针front和rear;当front和rear都为NULL时队列为空;front指向队列第一个节点,rear指向最后一个节点,当两者指向同一个节点说明队列只有一个节点;
还有不设头指针的链队列表示形式,这里不予说明;
下面为上图所示链队列结构的定义和相关运算实现代码:
#include <stdio.h>
#include <stdlib.h>
#define Datatype int
//定义节点结构
typedef struct node{
Datatype data;
struct node *next;
}QueueNode;
//定义头节点
typedef struct{
QueueNode *front;
QueueNode *rear;
}LinkQueue;
//初始化链队列,头节点置空
void InitQueue(LinkQueue