Evtek TM04S Hannu Laine Algoritmit ja tietorakenteet Syksy 2006 Tehtävä 5. (Säiliön toteutuksen yleisyys) Verkosta löytyy ohjelma list3_version_3.c. Tässä ohjelmassa on toteutettuna merkkien järjestetty lista. Listan toteutuksessa ja sen käytössä eli pää- ohjelmassa, jolla testataan lista, on kuitenkin otettu huomioon yleisyys. Pääohjelma toimii siten, että ohjelma pyytää käyttäjää syöttämään merkkejä näppäimistöltä. Ohjelma lukee näppäimistöltä viisi merkkiä ja syötetyt merkit lisätään listaan. Tämän jälkeen ohjelma tulostaa listan sisällön. Koska lista on järjestetty, merkit ovat aakkosjärjestyksessä. Merkit voidaan tietysti syöttää missä järjestyksessä tahansa. Tällaista järjestettyä listaa voidaan myös kutsua "itsejärjestyväksi listaksi". Aja aluksi verkosta löytyvä valmis ohjelma ja syötä sille viisi merkkiä sekalaisessa järjestyksessä. Varsinaisena tehtävänä on muuttaa ohjelmaa siten, että listaan tallennetaan aikoja merkkien sijasta. Olet aikaisemmissa tehtävissä jo toteuttanut adt ajan. Käytä sitä edelleen tässä tehtävässä. Sovelluksen pitää edelleen toimia samalla logiikalla kuin ennen. Nyt siis listaan voidaan syöttää aikoja ja ne asettuvat sinne suuruusjärjestyksessä. Nyt siis tulostuvassa listassa ajat ovat suuruusjärjestyksessä. Huomautus 1. Vältä turhaa hukkatyötä, äläkä lähde tekemään muutoksia pääohjelmaan tai listan toteutukseen, koska siihen ei ole mitään tarvetta. Huomautus 2. Paras tapa edetä on varmaan sellainen, että käytät tekemäsi ajan täsmälleen sellaisena kuin se on nyt. Tämä on mahdollista kun käytät yleistä tietotyyppiä Titem ns. adaptorina eli määrittelet tyypin Titem siten, että se on tyyppiä Time ja toteutat sitten tälle tyypille funktiot read_item, print_item ja compare_item siten, että kutsut niissä vain vastaavia ajan funktioita. Huomautus 3. Käytä tekemäsi aikaa edelleen mustana laatikkona eli käytä vain tiedostoja time.h ja time.obj. Tämä on varmin tapa välttää kiusausta muuttaa adt aikaa, kun sen source koodi ei ole käytettävissä.