gpt4 book ai didi

在 C 中创建包含其他结构的二叉树的深拷贝

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

我有这个函数,它应该创建整个二叉树的深拷贝。

symbol_t* cloneTable(symbol_t *node) {

if (node == NULL)
return node;

symbol_t *newSymbol = malloc(sizeof(symbol_t));
newSymbol->type = node->type;
newSymbol->key = node->key;

if (node->value != NULL) {
value_t *newValue = malloc(sizeof(value_t));
newValue = node->value;
newSymbol->value = newValue;
}

newSymbol->leftChild = cloneTable(node->leftChild);
newSymbol->rightChild = cloneTable(node->rightChild);

return newSymbol;
}

但是,当我更改原始表中的时,复制表中的值也会发生更改。

我可以做什么来创建它的深拷贝?

预先感谢您的帮助。

最佳答案

在:

    value_t *newValue = malloc(sizeof(value_t));

你为一个对象分配内存。看起来,node 包含一个指向值对象的指针。与

    newValue = node->value;

您复制指针。要复制该值,请使用:

    *newValue = *node->value;

现在您可以将该对象放置在新节点中:

    newSymbol->value = newValue;

注意:当 node->value==NULL 时,不要忘记设置 newSymbol->value= NULL;

关于在 C 中创建包含其他结构的二叉树的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780982/

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