durst99 Geschrieben 15. Juni 2011 Geschrieben 15. Juni 2011 Hallo Ich habe versucht ein Programm für einen Binärbaum zu schreiben, jedoch stürzt mir das Programm beim Eingeben/Ausgeben mancher Folgen Elementen immer ab mit einem Fehler in der ntdll.dll Z.b wenn ich 3 neue Nodes eingebe : 9 , 1 , 10 Ich vermute der Fehler liegt wohl in der insertNode Funktion. Habe hier mal den Code : Ich bedanke mich jetzt schonmal. #include<stdio.h> #include<stdlib.h> struct Node { int element; struct Node *left,*right; }*root; typedef struct Node *node; typedef int ElementType; node insertNode(ElementType, node); void display(node, int); void main() { char ch; ElementType a; while(1) // Hauptmenü mit Auswahlmöglichkeiten { printf("\n<e>... Element Einfuegen\n<a>... Sortierte Ausgabe\n<x>... Programm beenden\n\nWarte auf Auswahl : \n----------------------------\n"); scanf("%s",&ch); switch(ch) { case 'e': printf("\nGeben Sie ein Element ein : "); scanf("%d", &a); root = insertNode(a, root); break; case 'a': if(root==NULL) printf("\n Baum ist leer!"); else display(root, 1); break; case 'x': exit(0); default: printf("ERROR ! Unzulaessige Eingabe"); } } } //---------------------------------------------------------------------------------- INSERT node insertNode(ElementType x,node t) { if(t==NULL) { t = (node)malloc(sizeof(node)); t->element = x; t->left = t->right = NULL; } else { if(x > t->element) t->left = insertNode(x, t->left); else if(x < t->element) t->right = insertNode(x, t->right); } return t; } //---------------------------------------------------------------------------------- AUSGABE void display(node t,int level) { int i; if(t) { display(t->right, level+1); printf("\n"); for(i=0;i<level;i++) printf(" "); printf("%d", t->element); display(t->left, level+1); } } Zitieren
Hexagon Geschrieben 16. Juni 2011 Geschrieben 16. Juni 2011 Moin. Du solltest dann "root" auch ordentlich initialisieren. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.