题目:
输入一个链表,反转链表后,输出新链表的表头
思路:
把当前链表的下一个节点cur插入到哑结点dummy的下一个节点中,就地反转。
dummy->1->2->3->4->5的就地反转过程:
dummy->2->1->3->4->5
dummy->3->2->1->4->5
dummy->4>-3->2->1->5
dummy->5->4->3->2->1
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null)
return null;
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode prev = head;
ListNode cur = head.next;
while(cur != null){
prev.next = cur.next; // 防止断链
cur.next = dummy.next;
dummy.next = cur;
cur = prev.next;
}
return dummy.next;
}
}
网友评论