题目描述:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
原题链接:旋转链表
思路
- 新建一个头节点node为NULL
- 记录原链表头节点的下一个节点next
- 将原链表的头节点的下一指针指向新建节点head.next=node
- 新建链表向前移一位node=head
- 将head指向原链表的头节点next
- 重复2~5步骤,直到原链表为NULL
如上图所示,依次得到反转后的链表
代码
public ListNode reverseList(ListNode head) {
ListNode listNode = null;
while (head != null){
ListNode next = head.next;
head.next = listNode;
listNode = head;
head = next;
}
return listNode;
}
记录原链表的下一个节点?
需要将原链表的头节点下一指针指向新链表的头节点,所以需要挪动原链表头节点,此时若不记录下一指针则会导致链表丢失,同时原链表的头节点下一指针指向新链表的头节点且新链表记录头节点后,需要将其变回原链表头节点