Witam.
Próbuje zaimplementować prostą listę jednokierunkową. Zrobiłem to w taki sposób:
<code = c>
struct list
{
int val;
list* prev;
};
void add(list *L, int n);
void show(list L);
int _tmain(int argc, _TCHAR argv[])
{
list *lista = new list;
int ch = 0;
while(ch != -1)
{
scanf("%d", &ch);
add(lista, ch);
};
show(lista);
return 0;
}
void add(list L, int n)
{
list next = new list;
next->prev = L;
next->val = n;
L = next;
}
void show(list *L)
{
while(L->val != NULL)
{
printf("%d\n",L->val);
L = L->prev;
}
}
Niestety nie działa to jak powinno i nie za bardzo jestem to w stanie zrozumieć. Wewnątrz funkcji add() wszystko jest ok. Pod sam koniec działania wskaźnik L wskazuje na jakąś strukture a w tej strukturze wskaźnik prev wskazuje na tą poprzednią.
Jednak zaraz po wyjściu z metody wskaźnik lista->prev wskazuje na losowe, niepoprawne miejsce w pamięci i wysypuje się w przypadku gdy spróbuje zajrzeć do środka.
Czy byłby ktoś tak miły i wyjaśnił mi czemu?