Selles õpetuses saate teada erinevat tüüpi lingitud loendeid. Samuti leiate lingitud loendi rakendamise C-st.
Enne lingitud loendi tüübi tundmaõppimist veenduge, et teaksite LinkedListi andmestruktuuri.
Lingitud loendeid on kolme tavalist tüüpi.
- Üksikult lingitud loend
- Kahekordse lingiga loend
- Ringkirjaga seotud loend
Üksikult lingitud loend
See on kõige tavalisem. Igal sõlmel on andmed ja kursor järgmisele sõlmele.
Ainult lingitud loendSõlm on esindatud järgmiselt:
struct node ( int data; struct node *next; )
Kolmeliikmelise eraldi lingitud loendi saab luua järgmiselt:
/* Initialize nodes */ struct node *head; struct node *one = NULL; struct node *two = NULL; struct node *three = NULL; /* Allocate memory */ one = malloc(sizeof(struct node)); two = malloc(sizeof(struct node)); three = malloc(sizeof(struct node)); /* Assign data values */ one->data = 1; two->data = 2; three->data = 3; /* Connect nodes */ one->next = two; two->next = three; three->next = NULL; /* Save address of first node in head */ head = one;
Kahekordse lingiga loend
Lisame kahekordse lingiga loendis eelmisele sõlmele osuti. Seega võime liikuda mõlemas suunas: edasi või tagasi.
Kahekordse lingiga loendSõlm on kujutatud kujul
struct node ( int data; struct node *next; struct node *prev; )
Kolmeliikmelise topeltlingitud loendi saab luua järgmiselt
/* Initialize nodes */ struct node *head; struct node *one = NULL; struct node *two = NULL; struct node *three = NULL; /* Allocate memory */ one = malloc(sizeof(struct node)); two = malloc(sizeof(struct node)); three = malloc(sizeof(struct node)); /* Assign data values */ one->data = 1; two->data = 2; three->data = 3; /* Connect nodes */ one->next = two; one->prev = NULL; two->next = three; two->prev = one; three->next = NULL; three->prev = two; /* Save address of first node in head */ head = one;
Ringkirjaga seotud loend
Ringikujuline lingitud loend on lingitud loendi variatsioon, milles viimane element on lingitud esimese elemendiga. See moodustab ümmarguse silmuse.
Ringkirjaga seotud loendÜmmarguse lingiga loend võib olla kas ühe- või kahekordne.
- eraldi lingitud loendi puhul osutab viimase elemendi järgmine osuti esimesele üksusele
- Topeltlingitud loendis osutab esimese üksuse eelkursor ka viimasele üksusele.
Kolmeliikmelise ümmarguse lingiga loendi saab luua järgmiselt:
/* Initialize nodes */ struct node *head; struct node *one = NULL; struct node *two = NULL; struct node *three = NULL; /* Allocate memory */ one = malloc(sizeof(struct node)); two = malloc(sizeof(struct node)); three = malloc(sizeof(struct node)); /* Assign data values */ one->data = 1; two->data = 2; three->data = 3; /* Connect nodes */ one->next = two; two->next = three; three->next = one; /* Save address of first node in head */ head = one;