递归实现链表反转的操作
public static ListNode recursion(ListNode head)
{
//递归结束的条件
if(head==null||head.next==null)return null;
//对下一个节点进行反转操作 递归进行
ListNode det = recursion(head.next);
//将原先连接的实现反转操作
head.next.next = head;
head.next = null;
return det;
}
迭代实现链表反转的操作
你需要对当前节点进行保存 设置curr 同时在反转的同时也需要知道前一个节点 设置prev进行保存前一个节点的信息 当然同时也需要保存下一个节点的信息 使用next节点来表示
public static ListNode reserve(ListNode head)
{
ListNode prev = null,next;
ListNode curr = head;
while(curr!=null)
{
next = curr.next;//当前节点的下一个节点
curr.next = prev;//当前节点反转后指向前一个节点
//前一个节点和当前节点依次往后移动
prev = curr;
curr = next;
}
//将得到的原来链表的最后一个节点 新链表头结点进行返回
return prev;
}