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); } }
Hexagon Geschrieben 16. Juni 2011 Geschrieben 16. Juni 2011 Moin. Du solltest dann "root" auch ordentlich initialisieren.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden