假設我有一個鏈表:
---------- ---------- ---------- ----------
| 1 | |--->| 2 | |--->| 3 | |--->| 4 | |--->NULL
---------- ---------- ---------- ----------
你的代碼,將其轉換爲:
---------------------- ----------------------
| | | |
v | v |
---------- ---------- ---------- ----------
| 1 | |--->| 2 | | | 3 | | | 4 | |
---------- ---------- ---------- ----------
^ |
| |
----------------------
注意,第一個元素仍指向回2.
如果之後加入該行parent->next = NULL
前兩個,你會得到:
---------------------- ----------------------
| | | |
v | v |
---------- ---------- ---------- ----------
NULL<---| 1 | | | 2 | | | 3 | | | 4 | |
---------- ---------- ---------- ----------
^ |
| |
----------------------
這其實是c直立結構。
完整的代碼是:(你只需要打印的當前值每次遞歸調用)
node *reverse_list_recursive(node *list)
{
node *parent = list;
node *current = list->next;
if(current == NULL)
return parent;
else
{
current = reverse_list_recursive(current);
parent->next = NULL;
current->next = parent;
printf("\n %d \n",current->value);
return parent;
}
}
[鏈表遞歸反向(可能重複http://stackoverflow.com/問題/ 2434411/linked-list-recursive-reverse) – 2010-11-02 14:56:35
這不是重複的。不同的錯誤 – 2010-11-02 14:59:10
如果'list == NULL',這段代碼會做什麼? – 2010-11-02 15:02:07