我試圖刪除第N個位置中的節點。出於某種原因,當試圖刪除頭部時,功能錯誤在previous->next = current->next
。我試過添加一個條件來檢查是否previous->next != NULL
,但這沒有奏效。任何人都可以暗示我做錯了什麼,我該如何解決這個問題?謝謝。嘗試刪除頭時刪除第N個節點中斷
void removeNth(List** myList, int n) {
Node* previous;
Node* current;
int count;
if (getLength(*myList) >= n) {
if (getLength(*myList) == n) {
removeLast(myList);
}
else {
previous = NULL;
current = *myList;
count = 1;
while (count < n) {
previous = current;
current = current->next;
count++;
}
previous->next = current->next;
freeNode(current);
}
}
}
您需要爲'n == 1'添加一個特例。關於你的問題的提示:當'n == 1'時,你認爲'previous'指向什麼? –
出於好奇,'List'只是'Node'的typedef別名?因爲它從這裏看起來確實如此。如果不是,那'current = * myList'根本就沒有意義。如果是這樣,爲什麼要有'List'? – WhozCraig
哦,你*在調試器中運行你的程序?因爲那樣你就可以看到所有涉及的變量的值,並立即看到問題。 –