给定单向链表的最后一个节点,我们如何找到头节点

Given last node of singly linked list, how do we find head node

给定单链表的最后一个节点,我们如何找到头节点?

假设给定 JSON:

{ "id": "A", "next": "B" }, { "id": "B", "next": "C" } { "id": "C", "next": "D" } { "id": "D", "next": 空 }

现在假设上面没有排序,我们需要找出 HEAD 元素 'A'。

您可以使用 Array.prototype.find 来查找 id 不是列表中另一个对象的值 next 的元素。假设一个有效的非空单向链表必须恰好有一个元素满足该条件(头部)。如果列表为空,head 将被分配值 undefined.

const json = '[{"id": "A", "next": "B"}, {"id": "B", "next": "C"},{"id": "C", "next": "D"},{"id": "D", "next": null}]';
const objects = JSON.parse(json);

const head = objects.find( a => ! objects.find( b => a.id === b.next ) );

console.log( head );