目录
队列
队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表。头指针指向队头结点,尾指针指向队尾结点,即单链表的最后一个结点。
队列的链式存储类型可描述为
typedef struct {//链式队列结点
ElemType data;
struct LinkNode *next;
}LinkNode;
typedef struct {
LinkNode *front, *rear;//队列的队头和队尾指针
}LinkQueue;
当Q.front和Q.rear都为空时,链式队列为空。
出队时,首先判断对是否为空,若不空,则取出对头元素,将其从链表中摘除,并让Q.front指向下一个结点,若该节点是最后一个结点,则置Q.front和Q.rear都为null。入队时,建立一个新结点,将新结点插入到链表的尾部,并使Q.rear指向这个新插入的结点,若原队列为空,则令Q.front也指向该结点。(不带头结点的情况)
void InitQ(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;
e