Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lista jednokierunkowa [C]

Ostatnio zmodyfikowano 2014-12-31 13:44
Autor Wiadomość
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;

}
}

P-123722
1aam2am1
» 2014-12-31 13:44:09
C/C++
#define MT 50

struct Ksiazka {
    char tytul[ MT ]; //tytul ksiazki
    double cena; //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; //ustawiam wskaźnik na następną pozycje
        }
        * temp = ksiazka;
        ( * temp )->nast = 0;
       
    }
}

int main()
{
    dodajNaKoniec( "nic", 4 );
    dodajNaKoniec( "ni2c", 4 );
}
]Zobacz ten kod. Nie gwarantuje że działa
P-123729
« 1 »
  Strona 1 z 1