Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++中构建嵌套链表(C++非常新)。 列表中的节点可以是整数值,也可以是另一个包含所有整数值的链接列表_C++ - Fatal编程技术网

C+中的嵌套链表+; 我试图在C++中构建嵌套链表(C++非常新)。 列表中的节点可以是整数值,也可以是另一个包含所有整数值的链接列表

C+中的嵌套链表+; 我试图在C++中构建嵌套链表(C++非常新)。 列表中的节点可以是整数值,也可以是另一个包含所有整数值的链接列表,c++,C++,我已经阅读了其他关于SO的文章,我知道我应该为节点数据类型使用多个数据类型的联合。 这就是我到目前为止所拥有的 class linkedList { private: struct node { union data { int val; linkedList* list; }; data currData; node* next;

我已经阅读了其他关于SO的文章,我知道我应该为节点数据类型使用多个数据类型的联合。 这就是我到目前为止所拥有的

class linkedList {
private:
    struct node {
        union data {
            int val;
            linkedList* list;
        };
        data currData;           
        node* next;             // a pointer which will point to the next node
    }*p;
我的问题是如何开始在节点结构中分配列表指针。
例如,对于val,我知道我可以执行
p->currData->val=5

我不会使用联合。我只需要为每个字段保留一个值和某种类型的
类型
字段,以便您知道它是什么

 class LinkedList {
 public:
     class Node {
          LinkedList * list = nulptr;
          int value = 0;
          Node * next = nullptr;
     };
 };
在本例中,若列表为nullptr,则它不是指向新列表的节点。或者您可以显式地添加一个
类型
,但对于这么简单的东西,我可能不会

 p->value = 5;

不要使用联合体,而是查看
std::variant
。它的好处是“知道”它包含什么类型的数据。例如:
struct node{std::variant currData;node*next;}*p同时,考虑使用标准或类替换手动链表,如:<代码>类链接目录{Prime:STD::list p;…};<代码>请记住,当您玩完节点后,需要有人将它们全部放回原位,否则会出现内存泄漏。这本身就是使用
std::list
的一个很好的理由。如果没有,您需要确定是使用
int
还是指针,这样您就可以把所有链接的节点都放在一边,而这正是
std::variant
真正有用的地方。如果您仍然选择单独执行,请确保<>代码> Link KEdList观察至少一个注意事项:考虑直接存储<代码> LIKEDLIST/<代码>,而不是指针。一个正确编写的单链接列表不应该比一个指针大太多,最坏的情况可能是两个指针(头和尾)和列表中的链接数,我不使用std::list或std::variant的原因纯粹是为了学习指针和内存分配/释放@用户4581301您能否澄清直接存储linkedlist而不是指针是什么意思?如何初始化列表指针?我是说,这个怎么编译?因为当Node类编译时,它还不知道LinkedList类。我说的对吗?这是一个内在的阶级。它绝对知道什么是LinkedList*。你试过密码了吗?