在 JavaScript 中找到連結串列的中間節點


問題

我們需要編寫一個 JavaScript 函式,該函式將連結串列的頭作為第一個且唯一的引數。

我們的函式應該返回儲存在列表中間節點中的值。如果存在兩個中間節點,則我們應該返回其中的第二個節點。

例如,如果列表如下所示

輸入

[4, 6, 8, 9, 1]

輸出

const output = 8;

以下為程式碼

示例

class Node {
   constructor(data) {
      this.data = data;
      this.next = null;
   };
};
class LinkedList {
   constructor() {
      this.head = null;
      this.size = 0;
   };
};
LinkedList.prototype.add = function(data) {
   const newNode = new Node(data);
   let curr;
      if(this.head === null) {
         this.head = newNode;
      } else {
         curr = this.head;
         while(curr.next) {
            curr = curr.next;
      }
      curr.next = newNode;
   };
      this.size++;
};
const list = new LinkedList();
list.add(4);
list.add(6);
list.add(8);
list.add(9);
list.add(1);
const findMiddle = (head) => {
   let slow = head
   let fast = head
   while(fast && fast.next) {
      slow = slow.next
      fast = fast.next.next
   }
   return slow.data
};
console.log(findMiddle(list.head));

輸出

8

更新於: 2021 年 4 月 23 日

88 次瀏覽

開啟你的職業生涯

完成課程可獲得認證

立即開始
廣告