【发布时间】:2018-09-29 01:48:16
【问题描述】:
给定单链表的最后一个节点,我们如何找到头节点?
假设给定 JSON:
{ “id”:“A”, “下一个”:“B” }, { “id”:“B”, “下一个”:“C” } { “id”:“C”, “下一个”:“D” } { “id”:“D”, “下一个”:空 }
现在假设上面没有排序,我们需要找出 HEAD 元素'A'。
【问题讨论】:
标签: linked-list singly-linked-list
给定单链表的最后一个节点,我们如何找到头节点?
假设给定 JSON:
{ “id”:“A”, “下一个”:“B” }, { “id”:“B”, “下一个”:“C” } { “id”:“C”, “下一个”:“D” } { “id”:“D”, “下一个”:空 }
现在假设上面没有排序,我们需要找出 HEAD 元素'A'。
【问题讨论】:
标签: linked-list singly-linked-list
您可以使用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 );
【讨论】:
! 是如何工作的?为什么使用objects.forEach(...); 不起作用?我在Array.prototype.find 中找不到任何关于它的信息。
find 返回并且对象比! 将评估为false,否则将评估为true。
id 不是列表中另一个对象的值next?对我来说,它似乎只检查第一个元素是否在列表的任何对象中都没有 id 作为 next。