Listy,wskaźniki [c]

SS
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam problem w zrozumieniu,chodzi o funkcje usuwającą element z listy,mianowicie rozumiem że jesli jest

Kopiuj
 ltt*eject(ltt*eject,ltt*x)
if(x->prev==NULL)
if(x->next)
{x->next->prev=NULL;head=x->next/* tego nie rozumiem

to x jest głową listy ,i istnieje kolejny element, rozumiem też że teraz trzeba wskazać nową głowę listy (czyli ten kolejny element)
nie rozumiem tego co jest pogrubione, jak to w ogóle działa?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

To jest lista dwukierunkowa. Aby zrozumieć wystarczy sobie na kartce narysować listę składającą się powiedzmy z 3-ch elementów.

SS
  • Rejestracja: dni
  • Ostatnio: dni
0

Rozumiem działanie listy ,jak najbardziej wiem co kiedy się stanie ,nie rozumiem natomiast fragmentu kodu

Kopiuj
 {x->next->prev=NULL;head=x->next

jak to interpetować ? ( x wskazuje na next,next wskazuje na prev=NULL ??)

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Rozpisz to przez zmienne dodatkowe, lub NARYSUJ NA KARTCE.
x->next->prev=NULL; head=x->next;

next=x->next; next->prev=NULL; head=next;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.