給定連結串列的成對交換元素的 JavaScript 程式
在本教程中,我們將學習如何使用 JavaScript 編寫真對交換給定連結串列元素的程式。連結串列上的一種常見操作是成對交換相鄰元素。此操作在各種場景中都很有用,例如重新組織資料、按特定順序重新排列元素或最佳化某些演算法。此外,我們將重點關注使用 JavaScript 解決給定連結串列中成對交換元素的問題。我們將提供一個逐步實現演算法的方法,解釋其背後的邏輯和程式碼。在本教程結束時,您將清楚地瞭解如何實現一個 JavaScript 程式來成對交換連結串列中的元素,以及每個步驟的示例程式碼和解釋。
讓我們深入研究並探索 JavaScript 中此問題的解決方案!
問題陳述
給定一個連結串列,任務是實現一個 JavaScript 程式,該程式成對交換元素。換句話說,連結串列中連續位置的元素要相互交換。如果連結串列中的元素數量為奇數,則最後一個元素保持不變。程式應返回修改後的連結串列的頭。
示例
示例 1 −
Input: 1 -> 2 -> 3 -> 4 -> 5 Output: 2 -> 1 -> 4 -> 3 -> 5
說明 − 在給定的連結串列中,位置 1 和 2(1 和 2 是 0 索引)的元素被交換,結果為 2 -> 1 -> 3 -> 4 -> 5。然後,位置 3 和 4 的元素被交換,結果為 2 -> 1 -> 4 -> 3 -> 5。
示例 2 −
Input: 10 -> 20 -> 30 -> 40 -> 50 -> 60 -> 70 Output: 20 -> 10 -> 40 -> 30 -> 60 -> 50 -> 70
說明 −在給定的連結串列中,位置 1 和 2 的元素被交換,結果為 20 -> 10 -> 30 -> 40 -> 50 -> 60 -> 70。然後,位置 3 和 4 的元素被交換,結果為 20 -> 10 -> 40 -> 30 -> 50 -> 60 -> 70。最後,位置 5 和 6 的元素被交換,結果為 20 -> 10 -> 40 -> 30 -> 60 -> 50 -> 70。
現在,讓我們瞭解實現此問題陳述的演算法。
演算法
建立一個名為 pairwiseSwap(head) 的函式,該函式將連結串列的頭作為輸入。
初始化一個臨時變數 temp 來儲存當前節點,並將其設定為連結串列的頭。
以 2 為步長遍歷連結串列,即一次移動兩個節點。
對於每一對節點,交換它們的值。
移動到下一對節點。
繼續此過程,直到到達連結串列的末尾或沒有更多要交換的節點對。
返回修改後的連結串列的頭。
因此,在瞭解演算法之後,讓我們藉助一個示例來實現此演算法,在該示例中,我們將藉助 JavaScript 來實現此演算法。
示例:使用 JavaScript 實現
上面的程式實現了給定連結串列中元素的成對交換。它使用 Node 類來表示連結串列的節點,並使用 pairwiseSwap() 函式來成對交換相鄰節點的值。程式首先建立一個具有給定元素集的連結串列,顯示原始連結串列,使用 pairwiseSwap() 函式執行成對交換,然後顯示具有交換元素的更新後的連結串列。
輸入:原始連結串列:1 -> 2 -> 3 -> 4 -> 5 -> null
預期輸出:成對交換後的連結串列:2 -> 1 -> 4 -> 3 -> 5 -> null
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
function pairwiseSwap(head) {
let temp = head;
while (temp !== null && temp.next !== null) {
// Swap values of current and next nodes
let tempVal = temp.value;
temp.value = temp.next.value;
temp.next.value = tempVal;
// Move to the next pair of nodes
temp = temp.next.next;
}
return head;
}
// Linked list with odd number of elements
let head = new Node(1);
let node2 = new Node(2);
let node3 = new Node(3);
let node4 = new Node(4);
let node5 = new Node(5);
head.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
console.log("Original Linked List:");
let temp = head;
while (temp !== null) {
process.stdout.write(temp.value + " -> ");
temp = temp.next;
}
console.log("null");
head = pairwiseSwap(head);
console.log("Linked List after Pairwise Swapping:");
temp = head;
while (temp !== null) {
process.stdout.write(temp.value + " -> ");
temp = temp.next;
}
console.log("null");
結論
總而言之,本教程中提供的 JavaScript 程式演示了給定連結串列中元素成對交換的有效解決方案。該演算法迭代連結串列,成對交換相鄰元素,從而得到一個具有交換元素的更新後的連結串列。此解決方案在需要在連結串列操作中交換元素的各種場景中都很有用。透過實現此程式,可以輕鬆地使用 JavaScript 成對交換連結串列中的元素。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP