Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我将如何创建这个双链接列表?_C++_Doubly Linked List - Fatal编程技术网

C++ 我将如何创建这个双链接列表?

C++ 我将如何创建这个双链接列表?,c++,doubly-linked-list,C++,Doubly Linked List,我目前正在学习数据结构和链表。我正在尝试创建一个双链接列表,但我不知道该怎么做。我希望“节点”的数据是我已经创建的类。我能在网上找到的关于链表的所有信息,它们只是使用整数值,我不知道如何最好地合并其他类 我想我应该做的是 我有一个抽象类“Account”。然后,“储蓄”和“支票”类从Account派生。我希望“节点”的数据是帐户类型,可能是基类指针,这样“储蓄”和“支票”都可以使用 我不确定的是,比方说在我的“Node”类中,我的私有数据成员是指向帐户本身的基类“Account”指针、nextP

我目前正在学习数据结构和链表。我正在尝试创建一个双链接列表,但我不知道该怎么做。我希望“节点”的数据是我已经创建的类。我能在网上找到的关于链表的所有信息,它们只是使用整数值,我不知道如何最好地合并其他类

我想我应该做的是

我有一个抽象类“Account”。然后,“储蓄”和“支票”类从Account派生。我希望“节点”的数据是帐户类型,可能是基类指针,这样“储蓄”和“支票”都可以使用

我不确定的是,比方说在我的“Node”类中,我的私有数据成员是指向帐户本身的基类“Account”指针、nextPointer和previous指针。类“List”将管理链接列表,并创建新节点。但我如何访问帐户的成员功能


我想知道最好的方法是什么?我应该将getter添加到调用Accounts getter函数以检索有关帐户的数据的类“Node”中吗?还是只“节省”和“检查”节点本身,然后添加一个指向私有数据成员的下一个指针和上一个指针更好

您应该创建一个通用的双重列表

template <class T> class List{
    T value;
    Node& next; //Or Node* whatever you choose
    Node& prev;
    public:
     ...
 };
模板类列表{
T值;
Node&next;//或Node*任意选择
节点&prev;
公众:
...
};
这样,您的列表将作为一个列表。 现在,如果您需要帐户列表,只需声明一个即可

List<Account> allAccounts = new List<Account>(); //assuming there's a default c'tor
List allAccounts=new List()//假设有一个默认的c'tor
如果您需要在帐户和其他帐户之间建立某种关系,您可以使用继承


使列表通用且不受任何类型限制的事实将使代码看起来更加优雅、干净和有意义。

遵循OOP概念,列表应该返回列表对象并对列表执行操作,而不管它实际引用的数据类型是什么。理想情况下,要访问Account,应该使用Account对象并调用其公共函数,而不是考虑从列表中访问这些函数,反之亦然。在某些特殊情况下,您可以使用诸如Friend类/函数之类的东西,这比添加公共setter要好。您可以只使用
std::list
?因此,在Account类中,我是否应该添加下一个和上一个指针,然后“list”类管理帐户列表?这只是为了练习。我只是想知道如何创建自己的链接列表并管理它们。我想我明白你的意思了。那么如何从列表中访问这些对象呢?