Mam problem z listą jednokierunkową. Znalazłem w necie jej kod, jednak nieco gubię się w jej zrozumieniu. Jeśli ktoś mógłby ją pokrótce omówić byłbym bardzo wdzięczny. Najlepiej, gdyby to był opis linijka po linijce, ale dzięki, za każdą próbę pomocy.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
struct lista
{
int wartosc;
struct lista *nastepny;
};
struct lista *dodaj(int war, int miejsce, struct lista *poczatek)
{
struct lista *wsk=(struct lista *)malloc(sizeof(struct lista));
wsk->wartosc=war;
wsk->nastepny=NULL;
if(miejsce==0||poczatek==NULL)
{
wsk->nastepny=poczatek;
return wsk;
}
else
{
struct lista *pom1, *pom2;
pom1=poczatek;
while(--miejsce && pom1->nastepny)
pom1=pom1->nastepny;
pom2=pom1->nastepny;
pom1->nastepny=wsk;
wsk->nastepny=pom2;
return poczatek;
} }
lista *pokaz(lista *start)
{
printf("%d, ",start);
return start;
}
void main()
{
struct lista *start=NULL;
start=dodaj(1,0,start);
pokaz(start);
start=dodaj(2,0,start);
pokaz(start);
start=dodaj(3,0,start);
pokaz(start);
}