链接列表和Sentinel节点

时间:2015-01-05 21:54:20

标签: data-structures pseudocode circular-list

所以我的作业要求合并 - 排序2个不同的排序循环链表而不使用sentinal node所有列表都可以为空,我的任务是第一个sentinal node放置?

3 个答案:

答案 0 :(得分:0)

sentinal节点是一个不包含实际数据的节点 - 它只是为了方便实现而存在。

因此,具有4个真实元素的列表可能具有一个或多个额外节点,总共产生5或6个节点。

这些额外的节点可能是占位符(例如标记开始合并的地方),指示列表头部的伪节点,或算法设计者可以想到的任何其他节点。

答案 1 :(得分:0)

sentinel节点是您添加到代码中的节点,以避免使用特殊代码处理degeneracies。例如,对于合并排序,您可以将值= INFINITY的节点添加到要合并的两个列表的末尾,这可以保证一旦您点击列表的末尾就不能超越它,因为值始终是大于(或等于)其他列表中的值。

因此,如果你没有使用哨兵,你必须编写代码来处理这个问题。在合并例程中,您应该检查是否已到达终点..

答案 2 :(得分:0)

Sentinel节点是链表和树中的遍历路径终止符。它不保存或引用由数据结构管理的任何数据。好处之一是减少算法复杂度和代码大小。在这种情况下,代码大小会增加,运算速度也会降低。