Exercises in this lecture   Go to the notes, in which this exercise belongs -- Keyboard shortcut: 'u'   Alphabetic index   Course home      

Exercise 5.3
Opgave om cirkulære lister


Formålet med denne opgave er primært at få øvelse i at arbejde med 'pointere' (referencer) på relativt lavt niveau. En del af jer har aldrig prøvet det før. Dette er chancen... Øvelsen er dog også en god træning i objekt-orienteret programmering.

Ud fra ideerne på sliden, som er knyttet til denne opgave, ønskes en implementation af en klasse CircularList i Java. Bemærk referencen, som kommer 'udefra' går til det sidste element i den cirkulære liste. Tænk på denne reference som kommende fra objektet af typen CircularList.

Følgende udgør klient-interfacet af klassen:

    void insertFirst(Object el)
    Indsæt et nyt første-element med indhold el i den cirkulære liste.

    void insertLast(Object el)
    Indsæt et nyt sidste-element med indhold el i den cirkulære liste.

    void deleteFirst()
    Slet det første element i listen (svarende til el1 på sliden). Gør intet hvis listen er tom

    void deleteLast()
    Slet det sidste element i listen (svarende til el5 på sliden). Gør intet hvis listen er tom

    Object retrieveFirst()
    Returner det første element i listen, eller null hvis listen er tom

    Object retrieveLast()
    Returner det sidste element listen, eller null hvis listen er tom

    int size()
    Returner antallet af elementer i listen.

Det er en pointe i denne opgave at lave en løsning uden at benytte andre Java liste-klasser. Ud over at lave klassen CircularList får man brug for en klasse som repræsenterer kædeobjekterne. I er velkomne til at bruge min version af klassen Linkable .

Aftest klassen CircularList.

Estimer køretiden af operationerne i klassen CircularList. (Datalogerne: Brug ``Store O'' notation).

Hints: Det kan være en god ide at forsyne klassen CircularList med en række interne hjælpeoperationer, såsom returnering af første elements og næstsidste elements kædeobjekt. Endvidere er en operation, som tømmer listen og en operation som laver listen 'singulær' (altså bestående af netop ét element) nyttige.