我在某本書/教程中看到了這個。鏈接列表頭雙指針傳球
當您將頭部指針(鏈接列表)傳入函數時,您需要將它作爲雙指針傳遞。
例如: //這是爲了顛倒頭部指向第一個節點的鏈接列表。
void nReverse(digit **head)
{
digit *prev=NULL;
digit *curr=*head;
digit *next;
while(curr!=NULL)
{
next=curr->next;
curr->next=prev;
prev=curr;
curr=next;
}
*head=prev;
return;
}
這工作正常。
當我使用單一指針像它也可以,
void nReverse(digit *head)
{
digit *prev=NULL;
digit *curr=head;
digit *next;
while(curr!=NULL)
{
next=curr->next;
curr->next=prev;
prev=curr;
curr=next;
}
head=prev;
return;
}
我嘗試用頭指針打印清單。這兩個功能都正常工作。
我錯過了什麼嗎?
感謝,
順便說一句:如果函數返回'void',則不需要它的最後一行是'return;'。 – 2010-07-22 20:42:14
您可能需要[更好的書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – GManNickG 2010-07-22 20:45:24
使用std :: list。 –
Puppy
2010-07-22 20:57:36