题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
方法:迭代
思路
定义三个指针,一起往后走,走一步就修改mid指针的next,原本是mid的next 是right,我们修改成left。
初始状态:
结束状态:
结束了之后再执行最后的操作:
mid.next = left; head = mid;
代码
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null)return head;
ListNode left = null;
ListNode mid = head;
ListNode right = head.next;
while (right!=null){
mid.next = left;
left = mid;
mid = right;
right = right.next;
}
mid.next = left;
head = mid;
return head;
}