Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen.

Samankaltaiset esitykset


Esitys aiheesta: "Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen."— Esityksen transkriptio:

1 Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen listan keskelle on helppoa Alkioihin ei voida viitata indeksin avulla vrt. taulukko Listan kokoa ei ole ennalta rajoitettu 911112 luku seuraava 1 NULL

2 Joitakin linkitetyn listan operaatioita 1. Alkion lisääminen listaan 2. Alkion poistaminen listasta 3. Listan läpikäynti 4. Listan pituuden palauttaminen 911112 luku seuraava 1 NULL pääosoitin

3 C-kielinen implementaatio struct alkio { int luku; struct alkio* seuraava; }; 911112 luku seuraava 1 NULL pääosoitin

4 Alkion lisääminen listan päähän void lisaa_paahan(struct alkio **paa, int luku) { struct alkio *uusiAlkio = (struct alkio *) malloc(sizeof(struct alkio)); uusiAlkio->luku = luku; uusiAlkio->seuraava = *paa; *paa = uusiAlkio;} 911112 luku seuraava 1 NULL *paa 4 uusiAlkio

5 Alkion lisääminen listan päähän void lisaa_paahan(struct alkio **paa, int luku) { struct alkio *uusiAlkio = (struct alkio *) malloc(sizeof(struct alkio)); uusiAlkio->luku = luku; uusiAlkio->seuraava = *paa; *paa = uusiAlkio;} 911112 luku seuraava 1 NULL *paa, uusiAlkio 4

6 Alkion lisääminen listan keskelle void lisaa(struct alkio *edeltaja, int luku) { struct alkio *uusiAlkio = (struct alkio *)malloc(sizeof(struct alkio)); uusiAlkio->luku = luku; uusiAlkio->seuraava = edeltaja->seuraava; edeltaja->seuraava = uusiAlkio; } 911112 luku seuraava 1 NULL pääosoitinedeltäjä 4 uusiAlkio

7 Alkion lisääminen listan keskelle void lisaa(struct alkio *edeltaja, int luku) { struct alkio *uusiAlkio = (struct alkio *)malloc(sizeof(struct alkio)); uusiAlkio->luku = luku; uusiAlkio->seuraava = edeltaja->seuraava; edeltaja->seuraava = uusiAlkio; } 911112 luku seuraava 1 NULL pääosoitin 4 uusiAlkio

8 Alkion poistaminen listan alusta void poista(struct alkio **listan_paa){ struct alkio *poistettava; poistettava=*listan_paa; *listan_paa = (*listan_paa)->seuraava; free(poistettava);} 911112 luku seuraava 1 NULL *listan_paa, poistettava

9 Alkion poistaminen listan alusta void poista(struct alkio **listan_paa){ struct alkio *poistettava; poistettava=*listan_paa; *listan_paa = (*listan_paa)->seuraava; free(poistettava);} 911112 luku seuraava 1 NULL poistettava*listan_paa

10 Alkion poistaminen listan keskeltä void poista(struct alkio *edeltaja){ struct alkio *poistettava; poistettava=edeltaja->seuraava; edeltaja->seuraava = poistettava->seuraava; free(poistettava);} 911112 luku seuraava 1 NULL pääosoitin, edeltäjä poistettava

11 Alkion poistaminen listan keskeltä void poista(struct alkio *edeltaja){ struct alkio *poistettava; poistettava=edeltaja->seuraava; edeltaja->seuraava = poistettava->seuraava; free(poistettava);} 911112 luku seuraava 1 NULL pääosoitin, edeltäjä poistettava

12 Listan läpikäynti struct alkio* nykyinen = paa; while (nykyinen != NULL) { /* tee jotain listan alkiolle (nykyinen->luku) */ nykyinen = nykyinen->seuraava; } 911112 luku seuraava 1 NULL pääosoitin, nykyinen

13 Listan läpikäynti struct alkio* nykyinen = paa; while (nykyinen != NULL) { /* tee jotain listan alkiolle (nykyinen->luku) */ nykyinen = nykyinen->seuraava; } 911112 luku seuraava 1 NULL pääosoitinnykyinen

14 Listan läpikäynti struct alkio* nykyinen = paa; while (nykyinen != NULL) { /* tee jotain listan alkiolle (nykyinen->luku) */ nykyinen = nykyinen->seuraava; } 911112 luku seuraava 1 NULL pääosoitinnykyinen

15 Listan pituuden palauttaminen int pituus(const struct alkio* paa) { int laskuri = 0; const struct alkio* nykyinen = paa; while (nykyinen != NULL) { laskuri++; nykyinen = nykyinen->seuraava; } return(laskuri); } for (nykyinen = paa; nykyinen != NULL; nykyinen = nykyinen->seuraava) laskuri++; return(laskuri);

16 Häntäalkio Nopeuttaa listan loppuun lisäämistä 911112 luku seuraava 1 NULL pääosoitinhäntäosoitin

17 Rengas Viimeisestä alkiosta osoitin ensimmäiseen alkioon 911112 luku seuraava 1 pääosoitinhäntäosoitin


Lataa ppt "Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen."

Samankaltaiset esitykset


Iklan oleh Google