1 / 25

2.8.3 Abstraktit tietotyypit

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

bonita
Télécharger la présentation

2.8.3 Abstraktit tietotyypit

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

  2. 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.

  3. 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ä.

  4. 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

  5. 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

  6. 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

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

  8. 2.8.3.2 Listan toteutus • vektorilla tai • linkitetyllä rakenteella Varsinkin jos alkioiden lukumäärä vaihtelee paljon, kannattaa käyttää linkitettyä dynaamista rakennetta.

  9. 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]

  10. 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

  11. 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]

  12. 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]

  13. 2.8.3.3 Puu (tree) • lineaarisen listan yleistys: alkiolla voi olla monta seuraajaa. • näin voidaan esittäähierarkkisia rakenteita.

  14. Puu (tree)… solmu kaari solmu kaari

  15. Puu (tree)… sisäsolmuja juuri lehti

  16. Puu (tree)… Vanhempi- lapsi: solmu ja sen seuraaja seuraaja solmu

  17. Puu (tree)… polku polku polku

  18. Puu (tree)… polun pituus: polulla olevien kaarien lukumäärä polun pituus 3 polun pituus 2

  19. Puu (tree)… puun korkeus: pisimmän polun pituus juuresta lehtisolmuun puun korkeus 4

  20. Puu (tree)… Alipuut eli poikapuut S Solmun S yksi alipuu Juurisolmun yksi alipuu

  21. Puu (tree)… solmun aste: solmun seuraajien lukumäärä Aste 1 Aste 3

  22. 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.

  23. Puu (tree)… • Täydellinen k-haarainen puu: puun jokaisen solmun, paitsi lehtisolmujen, kaikki k alipuuta ovat ei-tyhjiä.

  24. 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

  25. 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.

More Related