#include stdioh#include stdlibhtypedef struct TNode int data; struct TNode Lsubtree; struct TNode Rsubtree; TNode Tree;void InsertTreeTree int;int main Tree myTree = NULL; int data =
是可以运行的,但是在主函数中调用InsertTree函数时,传入的是myTree的地址,即&myTree,因为在InsertTree函数中需要修改myTree的值,而传入myTree本身只是传值,不会修改myTree的值。修改后的代码如下:
#include <stdio.h> #include <stdlib.h>
typedef struct TNode { int data; struct TNode *Lsubtree; struct TNode *Rsubtree; } TNode, *Tree;
void InsertTree(Tree*, int);
int main() { Tree myTree = NULL; int data[] = {5, 3, 7, 1, 4, 6, 8}; int length = sizeof(data) / sizeof(int);
for (int i = 0; i < length; i++) {
InsertTree(&myTree, data[i]);
}
return 0;
}
void InsertTree(Tree *Tree, int x) { int i = 0; TNode *q = (TNode *)malloc(sizeof(TNode)); q -> data = x; q -> Rsubtree = q -> Lsubtree = NULL; if (*Tree == NULL) { *Tree = q; } else { TNode *p = *Tree; while (i == 0) { if (p->data > x) { if (p->Lsubtree != NULL) { p = p -> Lsubtree; } else { p -> Lsubtree = q; i = 1; } } else { if (p->Rsubtree != NULL) { p = p -> Rsubtree; } else { p -> Rsubtree = q; i = 1; } } } }
原文地址: https://www.cveoy.top/t/topic/eq5U 著作权归作者所有。请勿转载和采集!