出隊操作
我們來思考這個過程,在下圖隊列中,我們出隊的第一個元素是元素A,不是1。(因爲1不是插入進來了的,而是我們初始化時就有的)。我們首先讓*t等於head的next,即元素A。然後修改head的next指向爲元素A的next。
這樣head的next就會指向元素B。出隊操作就完成了。
代碼如下:
status delQueue(LinkQueue* que,QElemtype *t){
if(que->rear==que->head)
return ERROR; //隊列爲空
QueuePtr p = que->head->next;
*t=p->data;
que->head->next=p->next;
if(que->rear==p) //這個判斷是 確保在清空隊列的時候,讓rear指針歸位。
que->rear=que->head;
free(p);
return OK;
}