Listy
Listy są to takie kontenery w którym elementy oprócz swoich danych zawierają wskaźnik na następnika i/lub poprzednika. Wyróżniamy kilka rodzai list:
- listy jednokierunkowe - charakteryzują się tym że zawierają tylko wskaźnik na następny element w listy
- listy dwukierunkowe - charakteryzują się tym że zawierają wskaźnik na następny element i poprzedni listy
- listy cykliczne - ogólnie taka sama jak lista dwukierunkowa z tą różnicą że pierwszy i ostatni element jest ze sobą połączony
- listy z wartownikiem charakteryzuje się tym że jeden z elementów listy jest tzw wartownikiem niewidocznym dla programisty, jego zastosowanie znacznie upraszcza zaimplementowanie listy
Przykładowa implementacja listy jednokierunkowej w języku C:
struct Lista{
Lista *nastepny;
/* jakieś dane */
};
List *pierwszy_element = NULL;
void dodaj_element(Lista *lista)
{
lista->nastepny = pierwszy_element;
pierwszy_element = lista;
}
void usun_element(Lista *lista)
{
Lista *tmp=pierwszy_element;
Lista *tmp2=NULL;
while(tmp != NULL)
{
if(tmp == lista)
{
if(tmp2==NULL)
{
pierwszy_element = tmp->nastepny;
}else
{
tmp2 = tmp->nastepny;
}
break;
}
tmp2=tmp;
tmp = tmp->nastepny;
}
}