题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:
- 反转链表,关键在于如何保存某一个结点的前驱和后继。
- 因此我们定义三个引用,cur指向当前结点,prev指向cur的前一个结点,curNext指向cur的后一个结点。
- 保持这种关系不变,直到curNext为空,此时cur所指向的结点,就是反转后链表的新头结点。
图解:
反转后的链表:
代码实现:
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode cur = head;
ListNode curNext = null;
ListNode prev = null;
while(cur != null){
curNext = cur.next;
cur.next = prev;
prev = cur;
cur = curNext;
}
return prev;
}
}