C++ 树类的指针问题

C++ 树类的指针问题,c++,pointers,tree,C++,Pointers,Tree,我目前在尝试创建树类时遇到问题。基本上可以归结为:我有一个根节点和一个当前节点。两者都是指针。我将根节点设置为当前节点,但是当我修改当前节点时,我现在也在修改根节点 如果我使根节点不是指针,那么它的下一个节点值不会更新 我已经尝试将下一个节点设置为指针,以便在两个节点中都进行更改,但这似乎也不起作用 我觉得应该有一个简单或明显的解决方案,我错过了,但由于某种原因找不到它。这是我的代码: 你为什么称它为只有一个链接的树类 在链表设计中,在设计时可以选择是否在根节点上有虚拟节点。为了简化某些边界情况

我目前在尝试创建树类时遇到问题。基本上可以归结为:我有一个根节点和一个当前节点。两者都是指针。我将根节点设置为当前节点,但是当我修改当前节点时,我现在也在修改根节点

如果我使根节点不是指针,那么它的下一个节点值不会更新

我已经尝试将下一个节点设置为指针,以便在两个节点中都进行更改,但这似乎也不起作用

我觉得应该有一个简单或明显的解决方案,我错过了,但由于某种原因找不到它。这是我的代码:


你为什么称它为只有一个链接的树类

在链表设计中,在设计时可以选择是否在根节点上有虚拟节点。为了简化某些边界情况,是否浪费了一个节点?我总是不喜欢。在没有虚拟节点的情况下,避免链表中所有边界问题的最干净方法是将当前位置保持为节点**,而不是节点*

因此,从current=&root开始,用current=&*current->nxt或更方便的:

node* tmp = *current;
// do other things with tmp
current = &( tmp-<nxt );

如果你真的在使用树结构,同样的想法是使用node**而不是node*解决更广泛的问题,避免了大量重复代码的需要。

我认为这里的根本问题是你对树的理解

这:

struct node
{
        std::string value;
        std::string dst;
        std::string src1;
        std::string src2;
        node *nxt;
};
只是链接列表中的一个节点。一个树需要一个节点才能有多个子节点,所以至少要从结构中的节点指针列表开始。我还推荐参考资料而不是指针。您可能需要一个包含节点的树类,而不仅仅是节点,因此您可以编写引用该树的代码。差不多

class Tree
{
   Node Root;
    ...
}

我看不到在添加新节点后将当前指针移动到另一个位置的位置,除非每次添加新节点后调用getNext,否则将保持与以前不应该移动的位置相同的位置。也许这可能是个问题。
此外,您正在使用的结构称为链表。每个树节点都应该有多个后续节点。链表是一棵树,每个节点都有一个后续节点

我的意思是在根和当前节点不为空时添加。