所以我的作业要求合并 - 排序2个不同的排序循环链表而不使用sentinal node
所有列表都可以为空,我的任务是第一个sentinal node
放置?
答案 0 :(得分:0)
sentinal节点是一个不包含实际数据的节点 - 它只是为了方便实现而存在。
因此,具有4个真实元素的列表可能具有一个或多个额外节点,总共产生5或6个节点。
这些额外的节点可能是占位符(例如标记开始合并的地方),指示列表头部的伪节点,或算法设计者可以想到的任何其他节点。
答案 1 :(得分:0)
sentinel节点是您添加到代码中的节点,以避免使用特殊代码处理degeneracies。例如,对于合并排序,您可以将值= INFINITY的节点添加到要合并的两个列表的末尾,这可以保证一旦您点击列表的末尾就不能超越它,因为值始终是大于(或等于)其他列表中的值。
因此,如果你没有使用哨兵,你必须编写代码来处理这个问题。在合并例程中,您应该检查是否已到达终点..
答案 2 :(得分:0)
Sentinel节点是链表和树中的遍历路径终止符。它不保存或引用由数据结构管理的任何数据。好处之一是减少算法复杂度和代码大小。在这种情况下,代码大小会增加,运算速度也会降低。