在 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
廣告