使用基準值對鍊錶進行分割槽

2021-09-02 07:17:50 字數 991 閱讀 4866

1. 問題描述:

編寫**,以給定值x為基準將鍊錶分為兩部分,所有小於x的結點排在大於或等於x的結點之前

給定乙個鍊錶的頭結點 listnode * phead,請返回重新後的鍊錶的頭指標

注意:分割以後原來的資料順序不變

不要開闢新的空間,即不要新建節點

2. 我們可以定義幾個指標把給出的鍊錶分為兩部分,左邊的鍊錶元素值小於x,右邊鍊錶元素值大於等於x,掃瞄整個鍊錶進行判斷當前元素應該加入的哪邊的鍊錶,掃瞄完成之後那麼把左右鍊錶連線起來,這裡需要注意邊界的問題,假如左邊的鍊錶為空,那麼直接返回右邊鍊錶的頭指標

public class main 

} public static void main(string args) ;

listnode head = new listnode(arr[0]);

listnode p = head;

for(int i = 1; i < arr.length; i++)

p = head;

while(p != null)

system.out.print("\n");

int n = 3;

listnode node = partition(head, n);

while(node != null) }

private static listnode partition(listnode head, int n) else

}elseelse

}p = p.next;

} //判斷左邊的鍊錶是否為空

if(leftfirst == null)

lefttail.next = rightfirst;

//一定要寫上下面的if判斷語句假如不寫會出現錯誤

if (righttail != null) righttail.next = null;

return leftfirst;

} }

鍊錶例題3 用基準值將鍊錶分割槽

解題思路 1.建立乙個結點類。2.建立乙個分割方法。3.宣告四個結點分別儲存小於基準值,大於或等於基準值 注意這裡是宣告結點,不是例項化結點,所以不算違規 1.lhead,ltail用來儲存小於基準值的。2.rhead,rtail用來儲存大於或等於基準值的。假如鍊錶如圖 如下 1 public cl...

對鍊錶進行排序

對鍊錶進行排序 參考的思路是來自於這位 哥們 definition for singly linked list.struct listnode class solution listnode rt sort head return rt listnode sort listnode begin 鍊...

147 對鍊錶進行插入排序 鍊錶

插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 2 輸入 1 5 3...