我在某本书/教程中看到了这个。链接列表头双指针传球
当您将头部指针(链接列表)传入函数时,您需要将它作为双指针传递。
例如: //这是为了颠倒头部指向第一个节点的链接列表。
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