Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Tietorakenteet / Copyright © 2001 Arto Wikla.

581325-0 Tietorakenteet, 1. välikoe 12.3.2001/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Jokainen vastaus omalle arkilleen!


  1. Selitä täsmällisesti ja havainnollisesti, mitä funktioluokat O(f(n)) tarkoittavat ja miten niitä käytetään algoritmien suoritusajan luonnehdintaan? Anna esimerkkejä algoritmeista, jotka kuuluvat luokkiin O(1), O(log n), O(n), O(n2) ja O(2n). Perustele.
                                                                  (7 pistettä)
    
    

  2. Juna esitetään kahteen suuntaan linkitettynä listana. Veturi ja vaunut ovat merkkijonoja. Ohjelmoi luokka Juna, jolla on operaatiot:

    Määrittele metodien käyttäytyminen myös virhetilanteissa.

    Laadi luokkaa Juna käyttäen ratapihan töidensuunnittelijalle kirjastoluokka Tyokalut, joka sisältää seuraavat välineet:

    Huom: Työkalut on toteutettava käyttäen pelkästään yllä lueteltuja julkisia metodeita.
                                                                  (7 pistettä)
    
    
  3. Määrittele lista, pino ja jono abstraktina tietotyyppinä.
                                                                  (4 pistettä)
    
    
    

  4. Binääripuu esittää sellaista sukupuuta, jossa juurena on "minä". Juuren alipuut ovat "äiti" ja "isä", jne. Puun määrittely alkaa seuraavasti:
       public class Sukupuu {
    
         private class Sukulainen {
           private String nimi;
           private int syntymävuosi;
           private Sukulainen äiti, isä;
         }
    
         private Sukulainen juuri;
    
         public Sukupuu() {
           juuri = null;
         }
         ...
    
    
    Ohjelmoi luokkaan metodit (määrittele toiminta myös virhetilanteissa)

                                                                  (7 pistettä)