Chcę napisać listę jednokierunkową, a następnie ją wypisać. Jednak nie mogę tego zrobić, bo przy drugiej wartości w funkcji print po wywołaniu pokazują mi się przypadkowe liczby. Co jest nie tak?
#include <stdio.h>
#include <mm_malloc.h>
typedef struct element
{
int liczba;
struct element* nastepny;
} elementptr;
elementptr* dodaj(elementptr* glowa, int liczba)
{
elementptr* poprzedni=glowa;
if (glowa)
while(poprzedni->nastepny)
poprzedni=poprzedni->nastepny;
elementptr* nowy=calloc(1, sizeof(elementptr));
nowy->liczba=liczba;
nowy->nastepny=NULL;
if(poprzedni)
poprzedni->nastepny=nowy;
return glowa ? glowa : nowy;
}
void main()
{
elementptr* glowa=dodaj(NULL,7);
glowa=dodaj(glowa,12);
glowa=dodaj(glowa,18);
do
{
printf("obecny: %d=%d ", *glowa, *glowa->nastepny);
glowa=glowa->nastepny;
} while(glowa->nastepny);
}