Új hozzászólás Aktív témák

  • asuspc96

    senior tag

    Helló!

    Olyan kérdésem lenne, hogy adott egy feladat, és ebben kellene rendezi egy 2 dimenziós tömb elemeit...na igen, csak ezt bináris fáknál, hogyan lehet megtenni ?
    Gondolom nem ugyan úgy mintha csak egy sima 2D-s tömb lenne (pl feltöltése 2db egymásba ágyazott ciklussal)

    #include <stdio.h>
    #include <stdlib.h>

    typedef struct fa {
    int ertek;
    int kulcs;
    struct fa *bal, *jobb;
    } BiFa;

    BiFa *beszur(BiFa *gyoker, int ertek) {
    if (gyoker == NULL) {
    BiFa *uj = (BiFa*) malloc(sizeof(BiFa));
    uj->ertek = ertek;
    uj->bal = uj->jobb = NULL;
    return uj;
    }
    if (ertek < gyoker->ertek) { /* balra szur */
    gyoker->bal = beszur(gyoker->bal, ertek);
    }
    else if (ertek > gyoker->ertek) { /* jobbra szur */
    gyoker->jobb = beszur(gyoker->jobb, ertek);
    }
    else {
    /* mar benne van */
    }
    return gyoker;
    }

    void sorban_kiir(BiFa *gyoker) {
    if (gyoker == NULL) /* leállási feltétel */
    return;

    sorban_kiir(gyoker->bal);
    printf("%d ", gyoker->kulcs);
    sorban_kiir(gyoker->jobb);
    }

    void felszabadit(BiFa *gyoker) {
    if (gyoker == NULL) /* leállási feltétel */
    return;

    felszabadit(gyoker->bal);
    felszabadit(gyoker->jobb);
    free(gyoker);
    }

    int main(void) {
    int i;
    BiFa *gyoker = NULL;

    char minta[][2]={{13, 105}, {22, 116}, {14, 111}, {45, 101}, {3, 99},
    {35, 32}, {23, 32}, {65, 32}, {18, 10}, {53, 97}, {17, 62},
    {27, 110}, {55, 33}, {15, 46}, {4, 108}, {59, 41}, {72, 32},
    {41, 102}, {6, 100}, {39, 110}, {60, 59}, {68, 116}, {31, 10},
    {74, 59}, {30, 123}, {63, 32}, {1, 105}, {16, 104}, {47, 108},
    {66, 114}, {28, 40}, {20, 105}, {26, 105}, {62, 32}, {29, 41},
    {46, 108}, {71, 110}, {25, 97}, {7, 101}, {64, 32}, {0, 35},
    {77, 10}, {50, 118}, {76, 125}, {56, 92}, {5, 117}, {34, 32},
    {48, 111}, {38, 105}, {8, 32}, {54, 103}, {19, 10}, {33, 32},
    {73, 48}, {32, 32}, {61, 10}, {51, 105}, {12, 100}, {36, 112},
    {67, 101}, {37, 114}, {44, 72}, {70, 114}, {58, 34}, {9, 60},
    {2, 110}, {52, 108}, {11, 116}, {10, 115}, {75, 10}, {24, 109},
    {40, 116}, {21, 110}, {49, 32}, {42, 40}, {43, 34}, {57, 110},
    {69, 117}, {78, 0}};

    for (i = 0; minta[i][2] > 0; i++)
    gyoker = beszur(gyoker, minta[i][2]);

    sorban_kiir(gyoker);

    felszabadit(gyoker);

    return 0;
    }

Új hozzászólás Aktív témák