next = NULL; roo-6ren">
gpt4 book ai didi

C - 指针、函数和递归

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:44 25 4
gpt4 key购买 nike

只是试图让一些涉及指针、函数和递归的代码工作:

Node * root = malloc(sizeof(Node));
root->data = "1";
root->next = NULL;
root->child = NULL;

Node * G = NULL;
BuildGraph(root, &G);
printf("Root is: %d\n", root->data);
Print(G, ">>"); // Custom Print function

和 BuildGraph:

void BuildGraph(Node * head, Node ** G) {
if (head->child == NULL) { // No child
printf("Head has no child! %d\n", head->data);
Push(head, &G);
Print(G, ">>");
return;
}
BuildGraph(head->child, &G);
return;
}

所以当我运行程序时,我的输出是这样的:

Head has no child! 1 // printf in BuildGraph
G: 1>> // Print(G, ">>") in BuildGraph
Root is: 1
G is empty! // Print(G, ">>") in main

有人知道 G 没有转移到 main 中的原因吗?

谢谢。

最佳答案

void BuildGraph() 中,BuildGraph(head->child, &G); 应该是 BuildGraph(head->child, G);。没有&,可能和Push(head, &G);

一样

在您的构建函数中,G 是一个 Node **。在 main() 之外,G 是一个 Node *

考虑在 BuildGraph() 中使用与 G 不同且更广泛的变量名。也许像

void BuildGraph(Node * head, Node ** AddressG) {
if (head->child == NULL) { // No child
printf("Head has no child! %d\n", head->data);
Push(head, AddressG);
Print(AddressG, ">>");
return;
}
BuildGraph(head->child, AddressG);
return;
}

我相信您的编译提供了有关此问题的警告消息。如果他们不建议调查如何打开它们。

关于C - 指针、函数和递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468670/

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