3 回答

TA贡献1883条经验 获得超3个赞
您必须在某处跟踪链表的头部。否则,您将如何遍历整个列表,或在列表中搜索元素?
如果您LinkList
本质上是一个节点(具有数据和对下一个节点的引用),则必须在某个单独的类中实现所有链表操作(添加、删除等...),以跟踪节点的头节点列表。
这会将您带回到使用节点类的链表类。
至于您添加的代码,LinkList insertAtBegin(int data)
如果您在列表的第一个节点上调用它,只会在列表的开头插入一个节点。但是没有什么可以阻止您在列表的任何节点上调用它,在这种情况下,它实际上会返回一个以新元素开头并以原始列表的子列表结尾的新列表。

TA贡献1775条经验 获得超8个赞
有两个班级有几个原因:
区分列表和单个节点的概念,
为了避免从每个方法中笨拙地返回头节点,
为了避免让类的客户端有责任跟踪头节点,
隐藏实现细节,以便可以更轻松地用等效类替换该类,
ETC...

TA贡献1817条经验 获得超14个赞
在第一个示例中,您的 LinkList 类只是一个节点类,因为它包含数据和它后面的节点
拥有 LinkedList 类的一般目的是为列表提供一个“包装器”,它只是一个包含列表头部的类(在链表的情况下,它是列表)和一些功能,例如查找功能或您需要的任何其他功能。
所以在你的情况下(第二个例子)它只是一个实现一些额外功能的包装类(insertAtBegin()
,insertAtPlace()
和insertAtLast()
)
添加回答
举报