Benim ağaç programı bir kök düğüm içine yerleştirdikten sonra çöküyor

oy
0

Ben ağaçları hale getirmeyi çok iyi değilim ve ben tamamen özyinelemeye berbat. Ancak, ben takıp ağaca verileri görüntülemek için bir program yapmayı denedik.

Sorun, kök düğüm içine yerleştirdikten sonra çöküyor ve ben nedenini bilmiyorum olmasıdır. Ağaç çok büyük değildir. Sadece 10 int.

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10;
/* run this program using the console pauser or add your own getch, system(pause) or input loop */
struct node{
    int data;
    struct node * left;
    struct node * right;
};


void insert(struct node * root,int num){
    printf(Insert called for num:%d\n,num);
    if(root == NULL){
        root = (struct node *)malloc(sizeof(struct node));
        root->data = num;
    }else if(num > root->data){ // Number greater than root ?
        insert(root->right,num); // Let the right sub-tree deal with it
    }else if(num < root->data){// Number less than root ?
        insert(root->left,num);// Let the left sub-tree deal with it.
    }else{
        // nothing, just return.
    }
}


void display(struct node * root){ // Inorder traversal
    if(root->left!=NULL){ // We still have children  in left sub-tree ?
        display(root->left); // Display them.
    }

    printf(%d,root->data); // Display the root data

    if(root->right!=NULL){ // We still have children in right sub-tree ?
        display(root->right); // Display them.
    }

}

int main(int argc, char *argv[]) {
    int a[10] = {2,1,3,5,4,6,7,9,8,10};
    int i;
    struct node * tree;

    for(i = 0; i < 10;i++){
        insert(tree,a[i]);
    }
    printf(Insert done);
    return 0;
}  

Nerede yanlış birisi bana söyleyebilir mi?

Bunun Stack üzerinde kodunuzu gözden ama bazen insanlara sormak hoş karşılanmaz biliyoruz programlama eşleştirmek işleri: p

Güncelleme:
ayarladıktan sonra struct node * tree = NULL;, insert()yöntem iyi çalışıyor. display()Nedenleri programı çökmesine.

Oluştur 02/10/2013 saat 05:54
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

içinde senin

int main(int argc, char *argv[]) {
    // ...
    struct node * tree;
    // what is the value of tree at this line?
    for(i = 0; i < 10;i++){
        insert(tree,a[i]);
    }
    // ...
} 

satırında için "ağaç" nokta ne işaretlenmiş geliyor?

Cevap 02/10/2013 saat 05:57
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more