Skapa queue

By . Latest revision .

Vi ska bygga om datastrukturen “queue”.
Utgå från koden för en Queue från övningen om datastrukturer och skriv om den så den inte använder Pythons inbyggda lista utan istället använder Node objekt för att hålla datan.

Så här kan det se ut när det är färdigt.

#Förkunskaper

Du har läst artikeln “Exceptions”.
Du har läst artikeln “Datastrukturer”.

#Krav

Ställ dig i mappen queue/.

# Ställ dig i kurskatalogen
cd me/kmom04/queue
  1. Skapa en fil med namnet queue.py i “queue” mappen. Kopiera koden för en Queue och klistra in i queue.py filen.

  2. Skapa en fil med namnet node.py i “queue” mappen. Kopiera koden för en Node och klistra in i node.py filen.

  3. Pythons inbyggda lista ska inte användas längre. Varje element i kön ska ligga i ett Node objekt och bilda en list struktur.
    Byt namn på instans attributet items till head i Queue klassen. Använd head för att referera till första noden i kön.

  4. Det är helt OK att lägga till fler metoder/attribut om man vill det i Queue klassen.

  5. Skapa filen main.py i “queue” mappen. Den ska innehålla en handler klass med en evighets loop (tänk marvin i python kursen). I loopen ska det finnas input alternativ för alla metoder i Queue klassen, kolla om den är tom, lägga till, ta bort, kolla på första värdet och kolla storlek. Det ska givetvis också gå att avsluta loopen.

  6. Om man gör peek på en tom kö ska ett exception kastas som fångas i din handler. Det ska alltså inte krascha.

# Ställ dig i kurskatalogen
#dbwebb validate list
dbwebb publish queue

Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.

#Extrauppgift

  1. Skapa ett klassdiagram över Queue klassen. Spara det som “klass.png” i “queue” mappen.

#Tips från coachen

Validera ofta. Så slipper du en massa valideringsfel i slutet av övningen.

Lycka till och hojta till i forumet om du behöver hjälp!

#Revision history

  • 2019-02-01: (C, aar) Tog bort extrauppgiften om sekvensdiagram.
  • 2018-01-25: (A, lew) First version.

Document source.

Category: oopython.