按X分割鍊錶

2021-09-25 16:26:03 字數 955 閱讀 6945

分割鍊錶

將乙個鍊錶按x的大小,將小於x的結點放在x結點的左邊,大於等於的在右邊

解決方法:建立兩個新鍊錶,分別用來儲存大於等於x及小於x的結點,最後進行拼接

1.首先分別建立兩個新煉表及指向兩個新鍊錶最後乙個元素的引用

node smaller=null;

node bigger=null;

node lastsmall=null;

node lastbig=null;

node cur=head;//遍歷鍊錶

2.遍歷鍊錶根據條件查詢結點

while(cur!=null)

else

lasts.next=cur;

lasts=cur;

cur=next;

4.總**

public node partition(node head,int x)

else

lasts.next=cur;

lasts=cur;

cur=next;

}//將節點插入small鍊錶中

else

else

lastb.next=cur;

lastb=cur;

cur=next;

}//將節點插入big鍊錶中

} if(lasts==null)

return big;//遍歷完之後,若small內無節點,則返回big鍊錶

else if(lastb==null)

return small;//遍歷完之後,若big內無節點,則返回small鍊錶

else

lasts.next=big;//否則進行拼接

return small;

}

鍊錶分割問題

題目 編寫 以給定的x為基準值將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。解法一 交換結點法,回想學習快速排序的時候,也是以基準值將一組數劃分成兩部分,小於基準值的排在前面,大於基準值的排在後半部分。因此解決這個問題也可以使用兩個指標。如果煉表頭結點開始遍歷,第乙個需要移動的結點...

11 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。public listnode partition listnode phead,int x...

leecode分割鍊錶

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 解題思路 該題相當於乙個分類問題,基於給定引數x分大和小。基於示例解...