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...