列表的开头是列表的第一个节点。它将为存储该节点引用的变量起一个好名字,如果列表为空,我希望它包含空引用。
somelinkedList.head | | v ______ ______ ______ | |n| | |n| | |n| | |e| | |e| | |e| | 12 |x| --> | 34 |x| --> | 56 |x| --> null | |t| | |t| | |t| |____|_| |____|_| |____|_|
取决于上下文,尾巴可以指代不同的事物。我惯用的术语是,
34 -> 56 -> null在此示例中,尾部与之相对应,也就是说,尾部与之相对应。
在其他上下文中,它可能是对最后一个节点的引用。在这种解释中,尾部将引用
56您示例中的节点。
关于您的第一次编辑,这恰好是一个 完全不同的问题 :
指针是对应于存储器地址的值。引用是引用某个对象的值(或null)。您不能在Java引用上执行指针算术,但否则我会说它们非常相似。
可能会使您感到困惑的是,Java中的变量 永远不能包含对象 。对象始终存在于堆中,并且变量包含原始数据类型或对堆上对象的引用。
关于第二次编辑:
在您提供的示例中,看起来add方法跳过了第一个元素,从某种意义上说,确实如此。这是因为该实现具有“虚拟”元素作为头。查看构造函数中head变量的初始化:
head = new Node(null);
我不明白他们为什么决定这样做。对我来说,这看起来很愚蠢。



