Lista jednokierunkowa [C]
Ostatnio zmodyfikowano 2014-12-31 13:44
Piciupol Temat założony przez niniejszego użytkownika |
Lista jednokierunkowa [C] » 2014-12-31 02:18:27 Witam. Pisze juz tutaj bo patrze i patrze, a nie moge zrozumiec gdzie mam blad. Pierdziele sie dlugo z prawdopodobnie prostym bledem, ale juz jestem tak zirtyowany ze prosze was o pomoc. Robie zwyczajna liste jednokierunkowa, funkcje ktora doda element na jej koncu. ale przy odwolywaniu sie do nastepnego elementu, debugger wywala mi ciagle Access Violation i nie wiem co z tym zrobic. Tutaj kawalki kodu : (Kod sie builduje, ale debugger wywala wspomniany blad w miejsciu temp->nast) typedef struct Ksiazka{ char tytul[MT]; //tytul ksiazki double cena; //cena }Ksiazka;
struct Wezel{ Ksiazka ks; struct Wezel *nast; } *glowa;
*********************** void dodajNaKoniec(char *t, double c) { struct Wezel *ksiazka = malloc(sizeof(struct Wezel)); ksiazka->ks.cena = c; int i = 0; while (t[i]) { ksiazka->ks.tytul[i] = t[i]; i++; } ksiazka->ks.tytul[i] = '\0';
if (glowa == 0) { glowa = ksiazka; } else { struct Wezel *temp = glowa; while (temp->nast) { temp = temp->nast; } temp= ksiazka; temp->nast = 0;
} }
|
|
1aam2am1 |
» 2014-12-31 13:44:09 #define MT 50
struct Ksiazka { char tytul[ MT ]; double cena; };
struct Wezel { Ksiazka ks; struct Wezel * nast; } * glowa;
void dodajNaKoniec( const char * t, double c ) { struct Wezel * ksiazka = static_cast < Wezel *>( malloc( sizeof( Wezel ) ) ); ksiazka->ks.cena = c; int i = 0; while( t[ i ] ) { ksiazka->ks.tytul[ i ] = t[ i ]; i++; } ksiazka->ks.tytul[ i ] = '\0'; if( glowa == 0 ) { glowa = ksiazka; } else { struct Wezel ** temp = & glowa->nast; while( temp ) { temp = &( * temp )->nast; } * temp = ksiazka; ( * temp )->nast = 0; } }
int main() { dodajNaKoniec( "nic", 4 ); dodajNaKoniec( "ni2c", 4 ); }
]Zobacz ten kod. Nie gwarantuje że działa |
|
« 1 » |