public Node reverse(Node first)
{
if(first == null) return null;
if(first.next == null) return first;
Node second = first.next;
Node rest = reverse(second);
second.next = first;
first.next = null;
return rest;
}
Node rest = reverse(second);这段之后具体是怎么执行的。
每次的rest的值是什么。是不是从链表最后一个往前返回rest值呢。。
感觉很奇怪。下面是鄙人拙计的想法。。
假如是 1→2→3这样的
Node 2 = 1.next;
Node rest = reverse(2);
2.next = 1;
1.next = null;
//由下面的 reverse(2)中rest为3 还是返回3
return rest;
reverse(2);
↓
Node 3 = 2.next;
Node rest = reverse(3);
//由3.next==null→ return 3;
2.next = 1;
1.next = null;
return rest; → 3
总感觉我的理解有问题。。
请问下大家是哪里出问题了~~谢谢