只是想让一些代码工作,包括指针、函数和递归:
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
和构建图:
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是aNode *
。
考虑在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;
}
我相信你的汇编提供了有关这个问题的警告信息。如果他们不建议调查如何打开它们。