链式队列基于单链表
包含队头指针(头指针)和队尾指针(指向尾结点)
#include<iostream>
typedef int Elemtype;
//链式队列结点
typedef struct LinkNode{
Elemtype data;
LinkNode *next;
}LinkNode;
//链式队列
typedef struct {
LinkNode *front; //队头指针
LinkNode *rear; //队尾指针
}LinkQueue;
//入队
void EnQueue(LinkQueue &Q, Elemtype e) {
LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));
s->data = e;
s->next = NULL;
Q.rear->next = s;
Q.rear = s;
}
//出队
bool DeQueue(LinkQueue &Q, Elemtype &e) {
if (Q.front == Q.rear) //空队列
return false;
LinkNode *s = Q.front->next; //头结点的下一个结点
e = s->data;
Q.front->next = s->next;
if (Q.rear == s)
Q.rear = Q.front; //若队列中只有一个结点,删除后变空
free(s);
return true;
}
int main() {
}