编辑:开关的默认值为“无效选项”,我只是想创建一棵树,程序正在编译,当我选择创建树的选项时,它只是说分段错误
过去几天我一直在做简单的数据结构程序,分段错误是困扰我很多的一个,我在互联网上研究了这个错误并得到了这个 链接,实际上它并没有帮助。
我正在尝试创建一个二叉搜索树。并且 create 的返回类型不是 void,它是 struct tree *
程序:
struct tree{
int data;
struct tree *rchild, *lchild;
};
struct tree * create(struct tree * root, int d){
if(root==NULL) {
root = (struct tree *) malloc(sizeof(struct tree));
root->data=d;
root->rchild=NULL;
root->lchild=NULL;
}else if(root->data < d) create(root->rchild, d);
else if(root->data > d) create(root->lchild, d);
else if(root->data == d) printf("duplication error");
}
main(){
struct tree *root;
int choice, c;
while(choice!=5){
printf("Enter choice\n1-insert into tree\n5-exit");
scanf("%d", &choice);
switch(choice){
case 1:
printf("enter data to be inserted");
scanf("%d",&c);
printf("error after scanf ");
create(root,c);
break;
case 5: exit(0); default: printf("invalid option");
}
}
}
我使用的操作系统是 Backtrack 5 R1
给给-1的人:先生,如果我的问题如此愚蠢和没有建设性,请告诉我的答案
有一个类似的链表问题,我也回答了这个问题,顺便写了一个树程序。