只是想让一些代码工作,包括指针、函数和递归:

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;
}

我相信你的汇编提供了有关这个问题的警告信息。如果他们不建议调查如何打开它们。

09-28 09:01