迭代算法:
public reverse(Node x)
{
Node reverse = null;
Node first = x;
Node second;
while(first!=null)
{
second = first.next;
first.next = reverse;
reverse = first;
first = second
}
return reverse
}
每次将原链表的第一个节点放到新链表的最后一个节点处,保持first指向原列表的剩余节点的首节点,second指向原链表的第二个节点,reverse指向新链表的首节点。
递归算法
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;
}
让链表的每一个节点都指向他的前一个节点,让第一个节点指向null