首先,单链表本身是一个递归定义的数据结构,也就是说,单链表中每个节点指向的依然是一个单链表,所以可以使用递归的特性来完成这个问题:
static Node ReverseLink(Node list)
{
if (list.next == null)
{
return list;
}
else
{
Node n = ReverseLink(list.next);
list.next.next = list;
list.next = null;
return n;
}
}
list.next.next = list;
list.next = null;
这两行是最终实现反转的地方,这里的第一行将当前节点的下一个节点的指针指向自己,然后将当前节点到下一个节点的断开,从而实现反转。