0
我正在尋找從我的隊列中刪除集合節點。假設我按名稱-ID搜索選擇節點。我知道如何從隊列的前面刪除某些東西,但是對於如何在用戶設置點(例如中途)刪除某些東西感到困惑。如何從隊列中刪除集合節點
我的功能:
void retrieveAndRemove(linkedPtr*hd, int size){
linkedPtr temp = *hd;
if (hd == NULL){
printf("List is empty!");
}
while(temp != NULL){
if (temp->status == IN_RESTAURANT && temp->size == size){
//HERE is where I am stuck, how do i now re-arrange the que
//Such that the node gets removed and the next node is linked
free(temp);
return;
}
temp = temp->next;
}
}
記住列表解析中的前一個節點指針,例如'* prev'。然後使用'prev-> next = temp-> next'將你要刪除的節點的鏈接複製並在* free'temp(temp)之前執行*。確保你處理了被刪除的第一個節點,你知道怎麼做,在這種情況下,'prev == NULL'(因爲這是你初始化本地變量的方式)。 while循環中的最後一條指令將是'prev = temp'。 –
根據定義,您不能從除隊列末尾之外的任何地方移除節點。你應該把它描述成一個'列表',而不是:) –