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'。 –
根据定义,您不能从除队列末尾之外的任何地方移除节点。你应该把它描述成一个'列表',而不是:) –