在本教程中,我們將學習用於成對交換給定連結清單的元素的 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 來實作該演算法。
上面的程式實作了給定鍊錶中元素的成對交換。它使用 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 輕鬆地執行鍊錶中元素的成對交換。
以上是用於成對交換給定鍊錶元素的 JavaScript 程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!