编写一个函数,接受一条链表的首节点作为参数,(破坏性的)将链表翻转并返回结果链表的首结点
分析
为了完成这个任务,我们需要记录链表中三个连续的结点:reverse ,first 和second。在每轮迭代中,从原链表中提取first,并将它插入你链表的开头。 first指向原链表中所以剩余结点的首节点,second指向原链表中所有剩余结点的第二个结点,reverse指向结果链表中的首节点。
public Node reverse(Node x)
{
Node first = x;
Node reverse = null;
while (first != null)
{
Node second = first.next;
first.next = reverse;
reverse = first;
first = second;
}
return reverse;
}