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