给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;//记录当前元素指针的指向地址
curr.next = prev;//当前指向前一个元素
prev = curr;//为了让下一个元素指向当前元素,所以保存当前元素的地址。
curr = next;//把指针下一节点,
}
return prev;
}
运行结果:
思路:
如果第一个指针先指向null,那么第二个元素就找不到了,所以先保存第一个元素的指向地址,程序中使用next保存这个指针,这个指针是指向第二个元素。prev = curr;指针指向前一个节点后(curr.next = prev;),curr节点保留给prev之后,curr指向下一个节点(curr = next;)。