250 likes | 354 Views
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
E N D
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.
Abstraktit tietotyypit… Tarkastellaan kolmea abstraktia tietotyyppiä: • lista, erikoistapauksia pino ja jono • puu, erikoistapauksena binääripuu • graafi. Kaikki em. kolmen tyypin toteutuksessa käytetään yleensä edellä tarkasteltuja konkreettisia tietorakenteita.
Abstraktit tietotyypit… Lista • dynaaminen rakenne, joka koostuu alkioista • alkiot peräkkäin • jokaisella alkiolla paitsi viimeisellä on seuraaja • jokaisella alkiolla paitsi ensimmäisellä on edeltäjä.
Abstraktit tietotyypit… Lista • listan operaatioita: • alkion lisäys ja poisto mielivaltaiseen kohtaan • listan tyhjyyden tarkistus • listan ensimmäisen alkion ja listan loppuosan palauttavat operaatiot • Myös voidaan sanoa, että lista on • tyhjä lista tai • alkio, jota seuraa lista
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
Abstraktit tietotyypit… Listan peräkkäiskäsittely Ota käsiteltäväksi listan ensimmäinen alkio WHILE ei olla listan lopussa DO käsittele listan alkio siirry seuraavaan alkioon ENDWHILE
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.
2.8.3.2 Listan toteutus • vektorilla tai • linkitetyllä rakenteella Varsinkin jos alkioiden lukumäärä vaihtelee paljon, kannattaa käyttää linkitettyä dynaamista rakennetta.
Listan toteutus … Vektoritoteutus: Määritellään tietue, jossa kaksi kenttää: pituus (listan alkioiden lkm) ja vektoriA, jossa on n alkiota. Lista on tietueessa L: pituus: A: k A[1] A[2] … A[k] … A[n]
Listan toteutus … Alkion lisääminen listaan paikkaan, 1 <= i <=k+1. MODULE lisää (lista L, alkio a, indeksi i) L.pituus:=L.pituus +1 IF 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] ENDFOR L.A[i]:=a ENDIF ENDMODULE
Lisäys listan loppuun, k=3, n=6.Alkutilanne: Lopputilanne: 3 A[1] A[2] A[3] A[4] A[5] A[6] 4 A[1] A[2] A[3] A[4] A[5] A[6]
Lisäys listan keskelle, i=2, k=3, n=6.Alkutilanne: Lopputilanne: 3 A[1] A[2] A[3] A[4] A[5] A[6] 4 A[1] A[2] A[3] A[4] A[5] A[6]
2.8.3.3 Puu (tree) • lineaarisen listan yleistys: alkiolla voi olla monta seuraajaa. • näin voidaan esittäähierarkkisia rakenteita.
Puu (tree)… solmu kaari solmu kaari
Puu (tree)… sisäsolmuja juuri lehti
Puu (tree)… Vanhempi- lapsi: solmu ja sen seuraaja seuraaja solmu
Puu (tree)… polku polku polku
Puu (tree)… polun pituus: polulla olevien kaarien lukumäärä polun pituus 3 polun pituus 2
Puu (tree)… puun korkeus: pisimmän polun pituus juuresta lehtisolmuun puun korkeus 4
Puu (tree)… Alipuut eli poikapuut S Solmun S yksi alipuu Juurisolmun yksi alipuu
Puu (tree)… solmun aste: solmun seuraajien lukumäärä Aste 1 Aste 3
Puu (tree)… k-haarainen puu (k-ary tree): puun jokaisella solmulla on tarkalleen k alipuuta, joista osa voi olla tyhjiä. Siten k-haarainen puu on joko • tyhjä puu, jossa ei lainkaan solmuja • puussa on juurisolmu, jota seuraa k alipuuta, jotka ovat k-haaraisia puita.
Puu (tree)… • Täydellinen k-haarainen puu: puun jokaisen solmun, paitsi lehtisolmujen, kaikki k alipuuta ovat ei-tyhjiä.
Puu (tree)… Esimerkki, puu P: • ei-täydellinen • ariteetti 4 • solmun R edustama puu on Q:n alipuu • puun korkeus (P-S) on 4. P Q R S
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.