3 回答

TA貢獻1883條經驗 獲得超3個贊
您必須在某處跟蹤鏈表的頭部。否則,您將如何遍歷整個列表,或在列表中搜索元素?
如果您LinkList
本質上是一個節點(具有數據和對下一個節點的引用),則必須在某個單獨的類中實現所有鏈表操作(添加、刪除等...),以跟蹤節點的頭節點列表。
這會將您帶回到使用節點類的鏈表類。
至于您添加的代碼,LinkList insertAtBegin(int data)
如果您在列表的第一個節點上調用它,只會在列表的開頭插入一個節點。但是沒有什么可以阻止您在列表的任何節點上調用它,在這種情況下,它實際上會返回一個以新元素開頭并以原始列表的子列表結尾的新列表。

TA貢獻1775條經驗 獲得超8個贊
有兩個班級有幾個原因:
區分列表和單個節點的概念,
為了避免從每個方法中笨拙地返回頭節點,
為了避免讓類的客戶端有責任跟蹤頭節點,
隱藏實現細節,以便可以更輕松地用等效類替換該類,
ETC...

TA貢獻1817條經驗 獲得超14個贊
在第一個示例中,您的 LinkList 類只是一個節點類,因為它包含數據和它后面的節點
擁有 LinkedList 類的一般目的是為列表提供一個“包裝器”,它只是一個包含列表頭部的類(在鏈表的情況下,它是列表)和一些功能,例如查找功能或您需要的任何其他功能。
所以在你的情況下(第二個例子)它只是一個實現一些額外功能的包裝類(insertAtBegin()
,insertAtPlace()
和insertAtLast()
)
添加回答
舉報