Tervetuloa Jan Hakolan toteuttamaan linkitettyjen tietorakenteiden animointiosaan.

Tässä osassa voit edetä animointeihin linkkejä seuraamalla.
Paluut edellisille sivuille onnistuvat selaimen Back-painikkeella.

[Takaisin C-oppikirjaan]


TIETORAKENTEET

Linkitetty tietorakenne on listan eräs toteutustapa, jossa rakenteen tietoalkiot on talletettu "solmuihin", jotka on linkitetty osoittimilla toinen toisiinsa. Rakenteen alkuun osoittaa osoitin ja viimeinen solmu on maadoitettu osoittimen 0-arvoon. Kuva havainnollistaa perustilannetta. (Ks. Kuva 1.) Linkitetyllä tietorakenteella, on mm. seuraavanlaisia ominaisuuksia: siihen voidaan lisätä alkioita, siitä voidaan ottaa pois alkioita.

Kuva 1. Linkitetyn tietorakenteen peruskuva

Linkitetyn tietorakenteen etuna listan toteuttamisessa (esim. taulukkoon verrattuna) on , että se mahdollistaa hyvin joustavan dynaamisen muistin käytön. Listaa voi kasvattaa ja pienentää solmu kerrallaan, eikä sen koskaan tarvitse varata tilaa, kuin juuri listan koon verran - tosin solmut vaativat tietokentän lisäksi osoitinkentän.

 

PINORAKENNE

Pino on tietorakenne, jonka perusominaisuus on se, että viimeksi pinoon laitettu tietoalkio saadaan sieltä seuraavaksi pois: Last in First out (LiFo). (Ks. Kuva 2.)

Kuva 2. Pinotietorakenteen peruskuva

Kuvassa kaksi vasemmalla ylhäällä oleva yhtenäisellä viivoituksella piirretty suorakaide kuvaa uuden tietoalkion lisäämistä rakenteeseen. Kun tietoalkio on tallennettu tietokoneen muistiin, siirretään top-osoitin osoittamaan sen muistipaikkaa. Tätä kuvaa yhtenäisellä viivalla piirretty nuoli topista päällimmäiseen suorakaiteeseen. Jotta lista pysyisi ehjänä, on uuteen tietoalkioon lisättävä tieto edellisen tietoalkion sijainnista. Tämä ei näy kuvassa.

Kuvassa kaksi oikealla ylhäällä oleva katkoviivoituksella piirretty suorakaide kuvaa päällimmäisen tietoalkion poistamista rakenteesta. Ennen tietoalkion poistamista tietokoneen muistista, on top-osoitin siirrettävä osoittamaan seuraavaa tietoalkiota. Tätä kuvaa katkoviivalla piirretty nuoli.

Pinorakenteen peruskuvaus

Pinorakenteen linkkien rakentuminen

Pinorakenteen C-ohjelmointikieliset käskyt

 

JONORAKENNE

Jono on tietorakenne, jonka perusominaisuus on se, että ensimmäisenä jonoon laitettu tietoalkio saadaan sieltä ensimmäisenä pois: First in First out (FiFo). (Ks. Kuva 3.)

Kuva 3. Jonorakenteen peruskuva

Kuvassa kolme vasemmalla ylhäällä oleva katkoviivoituksella piirretty suorakaide kuvaa uuden tietoalkion lisäämistä rakenteeseen. Kun tietoalkio on saatu tietokoneen muistiin, siirretään last-osoitin osoittamaan sen muistipaikkaa. Tätä kuvaa katkoviivoituksella piirretty nuoli last-osoitimesta katkoviivoituksella piirrettyyn suorakaiteeseen. Jotta lista pysyisi ehjänä, on edelliseen tietoalkioon lisättävä tieto viimeisen tietoalkion sijainnista. Tämä ei näy kuvassa.

Kuvassa kolme oikealla ylhäällä oleva katkoviivoituksella piirretty suorakaide kuvaa rakenteessa ensimmäisenä olevan tietoalkion poistamista rakenteesta. Ennen tietoalkion poistamista, on asetettava first-osoitin osoittamaan seuraavaa tietoalkiota. Tätä kuvaa yhtenäisellä viivalla piirretty nuoli first-osoittimesta katkoviivoituksella piirrettyyn suorakaiteeseen.

Jonorakenteen peruskuvaus

Jonorakenteen linkkien rakentuminen

Jonorakenteen C-ohjelmointikieliset käskyt

 

HAJARAKENNE

Satunnaisen alkion osoittaminen ei linkitetyssä rakenteessa käy yhtä nopeasti kuin taulukossa, joten linkitettyä rakennetta ei välttämättä käytetä tilanteissa, joissa mikä tahansa tietoalkio pitää löytää nopeasti. Toisaalta linkkien avulla ketjun keskelle (tai alkuun kuin myös loppuun) voidaan lisätä solmu, tarvitsematta siirtää muita solmuja muistissa. Oheinen kuva havainnollistaa solmun liittämisen ketjun keskelle. (Ks. Kuva 4.)

Kuva 4. Esimerkki solmun liittämisestä ketjun keskelle

Kun uusi tietoalkio liitetään listarakenteeseen satunnaiseen paikkaan, täytyy kopioida uuden tietoalkion sijaintitiedot edelliseen tietoalkioon (kuvassa apu2) ja seuraavan tietoalkion (kuvassa apu1) sijaintitiedot uuteen tietoalkioon.

Tietoalkiota poistettaessa satunnaisesta paikasta, täytyy edelliseen tietoalkioon (kuvassa apu2 ) kopioida seuraavan tietoalkion (kuvassa apu1) sijaintitiedot.

Hajasaantirakenteen peruskuvaus

Hajarakenteen linkkien rakentuminen

 

    [Takaisin C-oppikirjaan]