题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
思路
- 采用快慢指针方法,快指针从头开始遍历,慢指针比快指针慢一个结点(初始化是null)
- 把快指针的后继结点向它前驱结点,也就是慢指针处结点,然后再让慢指针指向快指针,快指针指向原来的后继节点
- 这样就做到了一个反转,然后依次遍历,直到遍历结束则反转结束
- 最后返回慢指针即可
Code
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode fastNode = head;
ListNode slowNode = null;
while (fastNode != null) {
ListNode tempNode = fastNode.next;
fastNode.next = slowNode;
slowNode = fastNode;
fastNode = tempNode;
}
return slowNode;
}
}