首頁 >web前端 >js教程 >用於成對交換給定鍊錶元素的 JavaScript 程式

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

王林
王林轉載
2023-09-06 20:45:081062瀏覽

用于成对交换给定链表元素的 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刪除