//1.使用快慢指標,將鍊錶分成前後兩個部分
listnode fast=head;
listnode slow=head;
while(fast!=null && fast.next!=null)
listnode mid = slow; //solw指向中間節點
listnode first = head;
listnode second = mid.next;
mid.next=null;
//2.對第二個鍊錶second進行逆置(頭插法)
listnode list = second;
listnode p = list.next;
while(p!=null)
listnode t = p.next; //暫存工作指標的下乙個節點
p.next = list; //將當前節點插入到頭部
list = p;
p=t;//更新工作指標
}second = list;//逆置後的鍊錶
//3.將第2個鍊錶插入到鍊錶1中 first:l0 l1 l2 l3 second:l5 l4
//插入後: l0 'l5' l1 'l4' l2 l3
重排鍊錶(LeetCode)
題目鏈結 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...
鍊錶 重排鍊錶(leetcode 143
這個題是2019年408原題,就是我考研那年的題目,想想一年過去了,還是有點感慨的,希望明年這個時候的自己比現在更厲害吧 三個步驟 1 找到中間結點 2 反轉右半部分,記得將左半部分最後乙個的next指標指向null 不要留野指標 3 根據題目要求左邊取乙個,右邊取乙個 public class s...
leetcode之重排序鍊錶
definition for singly linked list.struct listnode 一 要找到鍊錶的中間節點,然後把鍊錶分為兩個,最關鍵的是不要忘記找到中間節點後,把鍊錶分為兩部分 middle next nulllptr 二 如何反轉鍊錶 三 如何合併鍊錶 class soluti...