反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路:
- 先记录当前节点的下一个节点
- head的next域为new_head
- 接着让new_head移动到刚刚的head处
- 让head移动到第下一个节点,进行下一轮
来个更直接的图吧
当然方法有很多种,思路很重要,希望能帮助到你
下面是我的代码
public static ListNode reverseList(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode new_head = null;
while (head != null) {
// 先记录当前节点的下一个节点
ListNode temp = head.next;
// head的next域为new_head
head.next = new_head;
// 接着让new_head移动到刚刚的head处
new_head = head;
// 让head移动到第下一个节点,进行下一轮
head = temp;
}
return new_head;
}