Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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);

    }

} 

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...