2.8.3 abstraktit tietotyypit
DESCRIPTION
2.8.3 Abstraktit tietotyypit. Edellä tarkasteltiin kolmea konkreettista tietorakennetta: tietue, taulukko ja linkitetty rakenne. Niiden avulla voidaan määritellä abstrakteja tietorakenteita (tai –tyyppejä), joille on ominaista se, että käyttäjälle - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/1.jpg)
2.8.3 Abstraktit tietotyypit
Edellä tarkasteltiin kolmea konkreettista tietorakennetta: tietue, taulukko ja linkitettyrakenne. Niiden avulla voidaan määritelläabstrakteja tietorakenteita (tai –tyyppejä),joille on ominaista se, että käyttäjällekuvataan vain ne ominaisuudet, jotka
käytönkannalta ovat tarpeellisia. Tällaisiaominaisuuksia ovat mm. tietotyypit ja tietojakäsittelevät operaatiot.
![Page 2: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/2.jpg)
Abstraktit tietotyypit…
Tarkastellaan kolmea abstraktia tietotyyppiä:lista, erikoistapauksia pino ja jonopuu, erikoistapauksena binääripuugraafi.
Kaikki em. kolmen tyypin toteutuksessa käytetään yleensä edellä tarkasteltujakonkreettisia tietorakenteita.
![Page 3: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/3.jpg)
Abstraktit tietotyypit…
Listadynaaminen rakenne, joka koostuu alkioistaalkiot peräkkäinjokaisella alkiolla paitsi viimeisellä on seuraajajokaisella alkiolla paitsi ensimmäisellä on edeltäjä.
![Page 4: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/4.jpg)
Abstraktit tietotyypit…
Listalistan operaatioita:
alkion lisäys ja poisto mielivaltaiseen kohtaanlistan tyhjyyden tarkistuslistan ensimmäisen alkion ja listan loppuosan palauttavat operaatiot
Myös voidaan sanoa, että lista ontyhjä lista taialkio, jota seuraa lista
![Page 5: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/5.jpg)
Abstraktit tietotyypit…
Listaesimerkkejä
sana on kirjainten muodostama lista
lause on sanojen muodostama lista
luku on numeroiden muodostama lista
puhelinluettelo on henkilötietueiden muodostama lista, jossa kukin tietue sisältää esim. nimen, osoitteen ja puhelinnumeron
![Page 6: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/6.jpg)
Abstraktit tietotyypit…
Listan peräkkäiskäsittely
Ota käsiteltäväksi listan ensimmäinen alkioWHILE ei olla listan lopussa DO
käsittele listan alkiosiirry seuraavaan alkioon
ENDWHILE
![Page 7: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/7.jpg)
Abstraktit tietotyypit…
Listan erikoistapauksia:jono (queue): lisäys ja poisto listan eri päistä. Alkiot poistetaan samassa järjestyksessä kuin ne on lisätty (vrt. kaupan kassajono). Ns FIFO-periaate.pino (stack): lisäys ja poisto samaan päähän. Poistetaan aina viimeksi lisätty alkio. Ns. LIFO-periaate.
![Page 8: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/8.jpg)
2.8.3.2 Listan toteutus
vektorilla tailinkitetyllä rakenteella
Varsinkin jos alkioiden lukumäärä vaihtelee
paljon, kannattaa käyttää linkitettyä dynaamista rakennetta.
![Page 9: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/9.jpg)
Listan toteutus …
Vektoritoteutus:Määritellään tietue, jossa kaksi kenttää:pituus (listan alkioiden lkm) ja vektori A,jossa on n alkiota. Lista on tietueessa L:
pituus:
A:
k
A[1] A[2] A[n]…… A[k]
![Page 10: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/10.jpg)
Listan toteutus …
Alkion lisääminen listaan paikkaan, 1 <= i <=k+1.
MODULE lisää (lista L, alkio a, indeksi i)L.pituus:=L.pituus +1IF i=L.pituus THEN L.A[L.pituus]:=a (* lisäys loppuun *)ELSE (* lisäys keskelle *)
FOR x:=L.pituus, L.pituus-1,…, i+1 DO L.A[x]:=L.A[x-1]
ENDFORL.A[i]:=a
ENDIFENDMODULE
![Page 11: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/11.jpg)
Lisäys listan loppuun, k=3, n=6.Alkutilanne:
Lopputilanne:
3
A[2] A[6]A[5]A[3] A[4]A[1]
4
A[2] A[6]A[5]A[3] A[4]A[1]
![Page 12: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/12.jpg)
Lisäys listan keskelle, i=2, k=3, n=6.Alkutilanne:
Lopputilanne:
3
A[2] A[6]A[5]A[3] A[4]A[1]
4
A[2] A[6]A[5]A[3] A[4]A[1]
![Page 13: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/13.jpg)
2.8.3.3 Puu (tree)
lineaarisen listan yleistys: alkiolla voi olla monta seuraajaa.näin voidaan esittää hierarkkisia rakenteita.
![Page 14: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/14.jpg)
Puu (tree)…
solmu
kaari
solmu
kaari
![Page 15: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/15.jpg)
Puu (tree)…
juurisisäsolmuja
lehti
![Page 16: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/16.jpg)
Puu (tree)…
solmuseuraajaVanhempi
-lapsi: solmu ja senseuraaja
![Page 17: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/17.jpg)
Puu (tree)…
polku
polkupolku
![Page 18: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/18.jpg)
Puu (tree)…
polun
pituus:
polulla
olevien
kaarien
lukumäärä
polun pituus 3polun pituus 2
![Page 19: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/19.jpg)
Puu (tree)…
puun korkeus:pisimmänpolun
pituusjuurestalehtisolmu
un puun korkeus 4
![Page 20: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/20.jpg)
Puu (tree)…
S
Alipuut eli
poikapuut
Solmun S yksi alipuu
Juurisolmun yksi alipuu
![Page 21: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/21.jpg)
Puu (tree)…
solmun
aste:
solmun
seuraajien
lukumäärä
Aste 3
Aste 1
![Page 22: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/22.jpg)
Puu (tree)…
k-haarainen puu (k-ary tree): puun jokaisellasolmulla on tarkalleen k alipuuta, joista osa voi olla tyhjiä.
Siten k-haarainen puu on jokotyhjä puu, jossa ei lainkaan solmujapuussa on juurisolmu, jota seuraa k alipuuta, jotka ovat k-haaraisia puita.
![Page 23: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/23.jpg)
Puu (tree)…
Täydellinen k-haarainen puu: puun jokaisen solmun, paitsi lehtisolmujen, kaikki k alipuuta ovat ei-tyhjiä.
![Page 24: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/24.jpg)
Puu (tree)…
Esimerkki, puu P:ei-täydellinenariteetti 4solmun R edustama puu on Q:n alipuupuun korkeus (P-S) on 4.
P
Q
R
S
![Page 25: 2.8.3 Abstraktit tietotyypit](https://reader035.vdocuments.pub/reader035/viewer/2022081515/5681594d550346895dc68b7f/html5/thumbnails/25.jpg)
Puu (tree)…
Puun korkeus rekursiivisesti:
jos puu on tyhjä tai koostuu vain juurisolmusta, p:n korkeus on 0.jos p:llä on vähintään yksi ei-tyhjä alipuu, puun p korkeus on 1 + max (h1, h2, …, hk), missä hi on puun p i:nnen alipuun korkeus.