从社区学院开始,我被告知要实现链表,开始节点为空节点,并将数据节点附加到空节点上,但在大学,他们不使用空节点。我记得有一个空节点是有好处的,但是现在想不起来了。
拥有一个空节点的好处是什么?
我能想到的一个是空的开始节点可以存储列表属性,比如链表的大小,因为它永远不会被删除,我们可以从中提取列表属性。
这是一个空节点的例子:(也可参考空节点实现)
(EmptyNode)->(1st Data)->(2nd Data)->null
这是一个更常见的没有空节点的例子。
(1st Data)->(2nd Data)->null
提前感谢。
空节点的优点是更容易表示仍然存在的空列表。
虽然您有时可以将空列表简单地表示为null,但缺点是它假设列表总是以指针表示。另一个缺点是你不能在null/上调用任何函数,这会使接口变得笨拙。
想象:
RootNodedListNode<char> list; // start empty
list.add('a');
list.add('b');
RootlessListNode<char> * list = null; // start empty
//list->add('a');
list = new RootlessListNode<char>('a');
list->add('b');