【发布时间】:2012-01-11 22:20:30
【问题描述】:
有什么方法可以在不使用 C 中的临时变量的情况下反转链表? 提前致谢。
著名的方法:
Element *reverse(Element *head)
{
Element *previous = NULL;
while (head != NULL) {
// Keep next node since we trash
// the next pointer.
Element *next = head->next;
// Switch the next pointer
// to point backwards.
head->next = previous;
// Move both pointers forward.
previous = head;
head = next;
}
return previous;
}
使用临时变量
苏拉布
【问题讨论】:
-
递归是个骗子,因为参数本质上是临时变量。
-
同意,但这通常是这类语义狡辩问题的全部内容。
-
这是不知道真实答案的参与者使用的那种语义问答。 :P
-
请告诉我递归的方式。
-
有几个问题类似于已经存在的问题:例如stackoverflow.com/questions/4078864/reversing-linked-list 和stackoverflow.com/questions/2621077/…......它们确实使用临时变量,但它们可能会给你一些开始的东西。
标签: c data-structures linked-list