本篇中的链式表示都是带头结点的链式表示。
1.链式队列的定义
typedef struct LinkNode {
//链式队列的结点
int data;
struct LinkNode *next;
}LinkNode;
typedef struct {
//链式队列
LinkNode *front;
LinkNode *rear; //队列的队头和队尾指针
}LinkQueue;
2.初始化
bool InitQueue(LinkQueue &Q)
{
Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode)); //建立头结点
Q.front->next = NULL; //初始化为空
return true;
}
3.判断空
由于初始化的时候初始化为front和rear相等,所以判断空的条件是front和rear相等。
bool IsEmpty(LinkQueue& Q)
{
if (Q.front == Q.rear)
return true;
return false;
}
4.入队
void EnQueue(LinkQueue& Q, int e)
{
LinkNode* s =