Status QueueInsert(LinkQueue *Q, ElemType e) {
// 创建新节点
LinkList newNode = (LinkList)malloc(sizeof(LNode));
if (!newNode) { // 分配内存失败
return ERROR;
}
newNode->data = e;
newNode->next = NULL;
// 将新节点插入到队尾
(*Q).rear->next = newNode;
(*Q).rear = newNode;
return OK;
}
Status QueueDelete(LinkQueue *Q, ElemType *e) {
if ((*Q).front == (*Q).rear) { // 队列为空
return ERROR;
}
// 删除队头节点
LinkList p = (*Q).front->next;
*e = p->data;
(*Q).front->next = p->next;
if ((*Q).rear == p) { // 如果删除的是队尾节点,则更新rear指针
(*Q).rear = (*Q).front;
}
free(p);
return OK;
}