0
我從給定鏈接列表中刪除元素有一些問題。這是我得到的:從鏈接列表中刪除元素
void deleteElement(node *list)
{
node *currP, *prevP = NULL;
for (currP = list; currP != NULL; prevP = currP, currP = currP->next) {
if(currP->info.name[0] == 'A') { /* Found it. */
if (prevP == NULL) {
list = currP->next;
} else {
prevP->next = currP->next;
}
free(currP);
return;
}
}
printList(list);
}
用這種方式寫的printList函數打印我的整個列表,它就像沒有被刪除。有什麼錯誤的想法?
'list = currP-> next;'很重要,因爲它對*調用者*沒有意義。 list,指針的值就是這樣;一個值*。您需要通過地址(指向指針的指針)傳遞指針,或者使用未使用的返回結果始終返回列表頭並相應地使用它。 – WhozCraig
在理解C basic之前,您不應該嘗試在C中執行鏈表。 – Stargateur