1 / 17

Linkitetty lista

911. 112. 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

ilario
Download Presentation

Linkitetty lista

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 911 112 1 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;} luku seuraava NULL *paa uusiAlkio

  5. 911 112 1 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;} luku seuraava NULL *paa, uusiAlkio

  6. 911 112 1 4 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; } luku seuraava NULL pääosoitin edeltäjä uusiAlkio

  7. 911 112 1 4 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; } luku seuraava NULL pääosoitin uusiAlkio

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

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

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

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

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

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

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

  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. 911 112 1 Häntäalkio • Nopeuttaa listan loppuun lisäämistä luku seuraava NULL pääosoitin häntäosoitin

  17. 911 112 1 Rengas • Viimeisestä alkiosta osoitin ensimmäiseen alkioon luku seuraava pääosoitin häntäosoitin

More Related