首頁 >web前端 >js教程 >用於在連結列表中搜尋元素的 JavaScript 程序

用於在連結列表中搜尋元素的 JavaScript 程序

王林
王林轉載
2023-09-02 17:45:06885瀏覽

用于在链接列表中搜索元素的 JavaScript 程序

鍊錶是一種線性資料結構,其中每個元素(也稱為節點)包含一個資料值和對清單中下一個節點的參考。鍊錶上的常見操作是搜尋特定元素。這涉及遍歷清單並將每個節點的資料值與目標元素進行比較,直到找到匹配項。

這是我們將在整篇文章中使用的連結清單的範例 -

10 -> 20 -> 30 -> 40 -> 空

在此鍊錶中,每個節點都包含一個值,箭頭指示序列中的下一個節點。此清單從包含值 10 的頭節點開始,以包含值 40 並指向 null 的尾節點結束。我們將使用這個鍊錶來示範如何使用 JavaScript 在鍊錶中搜尋元素。

讓我們看看下面的範例 -

Linked list: 10 -> 20 -> 30 -> 40 -> null
Input: 40
Output: Element found at index 3
Input: 10
Output: Element found at index 0
Input: null
Output: Element not found

現在讓我們討論一下在 JavaScript 中建立鍊錶的演算法。

演算法

第 1 步 - 定義一個具有兩個屬性的 Node 類別:value 和 next。 value屬性代表節點中儲存的數據,next屬性是對鍊錶中下一個節點的參考。

第 2 步 - 定義一個具有三個屬性的 LinkedList 類別:head、tail 和 length。 head屬性表示鍊錶中的第一個節點,tail屬性表示鍊錶中的最後一個節點,length屬性表示鍊錶中的節點數。

第 3 步 - 定義一個名為 - add 的方法到以值作為參數的 LinkedList 類別。 add 方法應該使用給定值來建立一個新節點並將其新增到鍊錶的末尾。

第 4 步 - 為 LinkedList 類別定義一個名為「remove」的方法,該方法採用一個值作為參數。 remove 方法應該刪除鍊錶中具有給定值的第一個節點。

第 5 步 - 為 LinkedList 類別定義一個名為 search 的方法,該方法將值作為參數。 search 方法應該傳回給定值的鍊錶中的第一個節點,如果沒有找到節點則傳回 null。

步驟6 - 為LinkedList類別定義一個名為reverse的方法,用於反轉鍊錶中節點的順序。

範例:使用 JavaScript 實作上述演算法

下面的程式定義了一個 Node 類別和一個 LinkedList 類別。 Node 類別使用給定的資料值和對清單中下一個節點的參考來建立一個新節點。 LinkedList 類別建立一個新的鍊錶,其頭節點最初指向 null,並且 size 屬性設定為 0。 add 方法將新節點加入到鍊錶的末端。 search方法遍歷鍊錶,如果找到則傳回該元素的索引,如果沒有找到則傳回一則訊息。最後,程式建立一個新的鍊錶,向其中添加元素,並蒐索特定元素。

// Define the Node class for a singly linked list
class Node {
   constructor(data) {
      this.data = data;
      this.next = null;
   }
}
// Define the LinkedList class
class LinkedList {
   constructor() {
      this.head = null;
      this.size = 0;
   }
   // Add an element to the linked list
   add(element) {
      const node = new Node(element);
      // If the linked list is empty, set the new node as the head
      if (this.head === null) {
         this.head = node;
      } else {
         // Traverse to the end of the linked list and add the new node
         let current = this.head;
         while (current.next !== null) {
            current = current.next;
         }
         current.next = node;
      }
      this.size++;
   }
   // Search for an element in the linked list
   search(element) {
      let current = this.head;
      let index = 0;
      // Traverse through the linked list until the element is found
      while (current !== null) {
         if (current.data === element) {
            return `Element found at index ${index}`;
         }
         current = current.next;
         index++;
      }
      return "Element not found";
   }
}
// Create a new linked list
const ll = new LinkedList();
// Add elements to the linked list
ll.add(10);
ll.add(20);
ll.add(30);
ll.add(40);
ll.add(50);
// Search for an element in the linked list
const result = ll.search(30);
console.log(result); 

結論

使用 JavaScript 在連結清單中搜尋元素的程式涉及建立一個「LinkedList」類,該類別定義為清單新增元素以及在清單中搜尋元素的方法。程式使用while循環遍歷鍊錶,並將每個節點中的資料元素與正在尋找的元素進行比較。如果找到該元素,則程式傳回該節點的索引,如果未找到該元素,則程式傳回「Element not find」。

以上是用於在連結列表中搜尋元素的 JavaScript 程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除