Suche Beispielcode zu 2d-Baum



  • #include <stdio.h>
    #include <stdlib.h>
    //#include <graphics.h>
    #include <time.h>
    #define node struct node
    #define point struct point
    
    // Anzahl der Knoten
    const int max_notes = 100;
    // GUI-Fenster-Breite
    const int max_width = 300;
    // GUI-Fenster-Höhe
    const int max_height = 300;
    
    point 
    {
        int  x, y, info;
    };
    
    node
    {
        point p;
        node *next, *l, *r; // l = linker, r = rechter Sohn
    };
    
    node *z, *head, *n; // head -> Wurzel
    point *p;
    
    void input();
    void tree2Dinsert(point p);
    void preprocess(point p[], int anzahl);
    void preorder(node *n);
    
    int main()
    {   
        input();
        preorder(head);
        printf("\n\n\t\t");
        //system("PAUSE");
        return 0;
    }
    
    //------------------------------------------------------------------------------
    
    // erzeugt Punkte
    void input()
    {
        int note_number, i;
    
        point p_feld[max_notes];
    
        srand(time(0));
    
        printf("\t\tBaumprogramm\n\t\t============\n\n");
        printf("\t\tPunktanzahl (1-%i): ", max_notes);
        scanf("%i", &note_number);
        printf("\n\n");
    
        for(i = 1; i <= note_number; i++)
        {
             p_feld[i].x = rand() % (max_width +1);
             p_feld[i].y = rand() % (max_height +1);
    
             printf("\t\tBaum %i (x y):\t", i);
             printf("%i %i", p_feld[i].x, p_feld[i].y);
             printf("\n");
        }    
    
        preprocess(p_feld, note_number);
    }
    
    //------------------------------------------------------------------------------
    
    // initialisiert den Baum
    void preprocess(point p[], int anzahl) 
    {
        int i;
    
        p[0].x = 0; 
        p[0].y = 0; 
        p[0].info = 0;
    
        z = (node*)malloc(sizeof *z);
    
        z->l = z; 
        z->r = z; 
        z->p = p[0];
    
        head = (node*)malloc(sizeof head);
    
        head->r = z; 
    
        head->p = p[0];
    
        //initwindow(max_width, max_height);
    
        for (i = 1; i <= anzahl; i ++)
        { 
             tree2Dinsert(p[i]);
        }
    }
    
    //------------------------------------------------------------------------------
    
    // fügt die generierten Punkte in den Baum ein
    void tree2Dinsert(point p)
    {
        node *f, *t;
        int d, td, info;
    
        int time;
    
        for (d = 0, t = head; t != z; d != d) 
        {
             td = d ? (p.x < t->p.x) : (p.y < t->p.y);
    
             f = t; 
    
             t = td ? t->l : t->r;
        }
    
        t = (node*)malloc(sizeof *z);
    
        t->p = p; 
        t->l = z; 
        t->r = z;
    
        if (td) 
        {
             f->l = t; 
             printf("%i", t);
        }
        else 
        {
             f->r = t;
        }
    }
    
    //------------------------------------------------------------------------------
    
    void preorder(node *n)
    {   
        if(n)
        {
             printf("\n\t\t%i %i\n\n", n->p.x, n->p.x);
             preorder (n->l);  
             preorder (n->r);
        }
    }
    

    Könnt ihr mir vielleicht helfen? Die Funktion soll den Baum durchlaufen und dann die Koordinaten ausgeben (preorder()). Das Programm stürzt jedoch dauernd ab, aber wieso?

    Vielen Dank im Voraus!

    mfg MrLINK



  • ich glaub dir haben sie noch keine lokalen variablen beigebracht oder 🙄



  • Kannst du das etwas spezifizieren?

    mfg MrLINK



  • kennerDerNoobs schrieb:

    ich glaub dir haben sie noch keine lokalen variablen beigebracht oder 🙄



  • Deine Andeutung hilft mir aber nur bedingt weiter.. wenn du mir nicht helfen möchtest, dann lass es doch einfach.

    Gibt es hier vielleicht noch jemanden der helfen kann anstatt mit wichtigtuerischen Anspielungen um sich zu schmeißen?

    mfg MrLINK



  • machen wir einen deal einstein, du beantwortest meine frage und ich deine, ganz einfach oder 😕



  • Angebot abgelehnt. Ich habe freundlich um Hilfe gebeten und nicht um das Geschwätz eines arroganten Proleten - ganz einfach, oder? 😕

    MrLINK



  • soweit ich das beurteilen kann, haben die besucher dieses forums bis auf ausnahmen kein helfersyndrom. sie wollen unterhalten sich über neuigkeiten austauschen und gegenseitig ⚠ helfen... da du offensichtlich nicht gewillt bist anderen zu helfen brauchts auf meine hilfe auch nicht zählen. bin ja mal gespannt wer dir deine frage beantwortet...



  • Ich habe mir einige Threads durchgelesen und dort nirgends gesehen, dass wenn jemand eine Frage hatte, der Antwortende erst eine entsprechende Gegenleistung gefordert hat. Von welcher Hilfe sprichst du überhaupt? Glaubst du ernsthaft ich erhoffe mir was von dir? Eher steht Einstein morgen vor meiner Tür als dass du mir deine so teuere Hilfe anbietest. 🙄

    MrLINK



  • MrLINK schrieb:

    Glaubst du ernsthaft ich erhoffe mir was von dir?

    scheinbar indirekt sonst wärst nicht vom c++ ins ansi c unterforum gewechselt...


Anmelden zum Antworten