編集:スイッチのデフォルトは「無効なオプション」です。ツリーを作成しようとしているだけです。プログラムはコンパイルされており、ツリーを作成するためのオプションを選択すると、単にセグメンテーションエラーが表示されます
私は過去数日間、単純なデータ構造プログラムを実行してきましたが、セグメンテーション エラーが非常に気になるものです。インターネットでエラーについて調査し、この リンクを取得しましたが、実際には役に立ちませんでした。
二分探索木を作成しようとしています。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");
}
}
}
使用しているOSはBacktrack 5 R1です
-1 を与えた人へ: 閣下、私の質問に対する答えを教えてください。
同様のリンクされたリストの質問があります。私もその質問に答えました。ところで、ツリープログラムを書いています。