【发布时间】:2016-06-16 00:56:53
【问题描述】:
一个符号链接列表,我想通过递归来修改它。但我不明白这行head->next->next = head;的含义。
为什么需要head->next->next?
struct Node{
int data;
Node* next;
};
这里是实现代码:
Node* reverseByRecursion(Node *head)
{
if(head == NULL || head->next == NULL)
return head;
Node *newHead = reverseByRecursion(head->next);
head->next->next = head;
head->next = NULL;
return newHead;
}
【问题讨论】:
-
我和你在一起,我也不明白(撇开中国的cmets),那个代码看起来很傻。
-
C 和 C++ 是不同的语言。不要用 C++ 编写这样的代码,使用类(最好是标准库)。为您的问题选择一种语言!或者那个代码是你的,在这种情况下你应该知道你在做什么。或者它不是你的。然后请你复制它的人解释一下。从某些网站复制代码总是一个坏主意。
-
如果没有更多信息(环形列表/终止),这可能会引发未定义的行为。一般来说,列表不太适合递归。更好地使用迭代。
-
@πάνταῥεῖ 你在说什么?我不明白你。
-
@BlackMamba 所以我们误解了。
标签: algorithm recursion linked-list