在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP