gpt4 book ai didi

c++ - [c++/pointers] : having objects A and B (B has vector member, 存储指向 A 的指针),知道 A 是否可以检索指向 B 的指针?

转载 作者:行者123 更新时间:2023-11-30 00:42:14 25 4
gpt4 key购买 nike

在尝试学习 C++ 时,我尝试实现表示非常基本的 trie 的类。我想出了以下内容:

class Trie {
public:
char data;
vector<Trie* > children;

Trie(char data);
Trie* addChild(Trie* ch); // adds child node

(skipped others members/methods)

};

addChild 方法检查 vector children 中是否存在具有相同数据 的子ch,如果不存在则它把它插入那里,如果是 - 返回指向已经存在的 child 的指针。

现在,考虑这个代码片段:

Trie t('c');
Trie* firstchild = new Trie('b');
Trie* secondchild = new Trie('a');


firstchild->addChild(secondchild);
t.addChild(firstchild);

如果我只有指向 secondchild 的指针,是否有可能以某种方式返回指向 firstchild 甚至 t 的指针?

我想知道是否可以这样做,因为我的工作代码的逻辑需要“向上”遍历 trie(从低节点到高节点)到当前对象的父节点。目前我只是使用递归函数向下移动 - 但我想知道是否还有其他方法?

如果上面的内容不清楚或者我在某处搞砸了,我很抱歉,我相当缺乏经验并且是凭内存写的,没有工作代码。

最佳答案

你需要添加类似的东西

Trie* parent;

Trie* previoussibling;
Trie* nextsibling;

到类(class)直接从 firstchildsecondchild 或反之亦然,或者从其中一个 child 上升到 t .

请注意,如果您需要这种关系,那么在添加和删除节点时将需要更多维护以保持所有链接正确。

关于c++ - [c++/pointers] : having objects A and B (B has vector member, 存储指向 A 的指针),知道 A 是否可以检索指向 B 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com