簡體   English   中英

我將如何創建此雙向鏈接列表?

[英]How Would I Go About Creating This Doubly Linked List?

我目前正在學習有關數據結構和鏈表的信息。 我正在嘗試創建一個雙向鏈接列表,但不確定如何去做。 我想成為已經創建的類的“節點”的數據。 我可以在網上找到有關鏈表的全部信息,它們僅使用整數值,而且我不確定如何最好地合並其他類。

我想我要做的是...

我有一個抽象類“ Account”。 然后,從Account派生“保存”和“檢查”類。 我希望將“節點”的數據設置為帳戶類型,可能是基類指針,以便可以同時使用“保存”和“檢查”。

我不確定的是,比如說在“ Node”類中,我的私有數據成員是指向帳戶本身,nextPointer和previousPointer的基類“ Account”指針。 “列表”類將管理鏈接列表,並創建新節點。 但是,我將如何訪問該帳戶的成員功能?

我想知道解決這個問題的最佳方法是什么? 我是否應該將getter添加到類“ Node”中,該類調用Accounts getter函數來檢索有關帳戶的數據? 還是只對節點本身進行“保存”和“檢查”,並向私有數據成員添加下一個指針和上一個指針會更好嗎?

您應該創建一個通用的雙重列表

template <class T> class List{
    T value;
    Node& next; //Or Node* whatever you choose
    Node& prev;
    public:
     ...
 };

這樣,您的列表將按其應有的方式作為列表。 現在,如果您需要一個帳戶列表,只需聲明一個

List<Account> allAccounts = new List<Account>(); //assuming there's a default c'tor

如果您需要在Account和其他帳戶之間建立某種關系,則可以使用繼承。

使列表通用並且不受任何類型限制的事實將使您的代碼看起來更優雅,更簡潔並且更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM