Lista jednokierunkowa, jak to działa?

0

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);
}

0

Oki będzie linijka po linijce... Odpalasz sobie kompliator, jaki masz, odpalasz w nim watches, wpisujesz odpowiedznie nazwy zmiennych i klepiesz w skrót klawiaturowy wskazujący na 'trace in'/'step over'. Linijka po linijce. Możesz dodatkowo uzyc 'breakpointów' i 'evaulate modify' (o ile to ostatnie jest). Może jeszcze 'run to'. Do tego jeszcze uzywasz swoich oczu i głowy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1