2.8.3 abstraktit tietotyypit

25
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 kuvataan vain ne ominaisuudet, jotka käytön kannalta ovat tarpeellisia. Tällaisia ominaisuuksia ovat mm. tietotyypit ja tietoja käsittelevät operaatiot.

Upload: bonita

Post on 02-Feb-2016

35 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: 2.8.3 Abstraktit tietotyypit

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

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

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

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

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

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

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

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

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

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

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

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

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

Puu (tree)…

solmu

kaari

solmu

kaari

Page 15: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

juurisisäsolmuja

lehti

Page 16: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

solmuseuraajaVanhempi

-lapsi: solmu ja senseuraaja

Page 17: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

polku

polkupolku

Page 18: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

polun

pituus:

polulla

olevien

kaarien

lukumäärä

polun pituus 3polun pituus 2

Page 19: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

puun korkeus:pisimmänpolun

pituusjuurestalehtisolmu

un puun korkeus 4

Page 20: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

S

Alipuut eli

poikapuut

Solmun S yksi alipuu

Juurisolmun yksi alipuu

Page 21: 2.8.3 Abstraktit tietotyypit

Puu (tree)…

solmun

aste:

solmun

seuraajien

lukumäärä

Aste 3

Aste 1

Page 22: 2.8.3 Abstraktit tietotyypit

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

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

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

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.