用於成對交換給定鍊錶元素的 JavaScript 程式

王林
發布: 2023-09-06 20:45:08
轉載
953 人瀏覽過

用于成对交换给定链表元素的 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 輕鬆地執行鍊錶中元素的成對交換。

以上是用於成對交換給定鍊錶元素的 JavaScript 程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!