我實現了選擇排序,我需要交換元素。 我有雙重鏈接列表與上一個和下一個鏈接。 和鏈接列表 我總是需要交換一些節點b
與第一個節點toStartFrom
交換元素雙向鏈表
public void Swap(Node toStartFrom, Node b) {
Boolean NextToEachOther = (toStartFrom.next == b);
toStartFrom.next = b.next;
b.previous = toStartFrom.previous;
if (NextToEachOther) {
toStartFrom.previous = b;
b.next = toStartFrom;
} else {
toStartFrom.previous = b.previous;
b.next = toStartFrom.next;
}
}
public void display() {
Node current = first;
while (current != null) {
...printing...
current = current.next;
}
}
但它不工作的第一個和最後一個元素。 沒有錯誤只是不正確的順序排序。 而不是在toStartFrom
節點之後排序後顯示任何元素。
當您在簡單數據集中的調試器中遍歷代碼時,您觀察到了什麼? –
此外,對於其中一個元素保證爲頭部的雙向鏈表,您將需要更新6個引用。畫一張圖片,看看爲什麼。 –
在調試中,確定它們在調試時交換過,也許我有一個顯示問題。 – Nikita