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

Alla kraven är för de som jobbar i grupp och ensamma. Det är inga specifika krav för de som jobbar i grupp.

  1. Börja med att kopiera koden som ligger i example/queue. Filen main.py är ett färdigt cli program som redan är implementerat och använder Pythons inbyggda kö. För att förstå hur programmet är uppbyggt kan ni kolla på Skapa en menu loop utan if-satser.
# Ställ dig i kurskatalogen
# börja med att uppdatera mappen med senaste exempelkoden
dbwebb update
cp -ri example/queue me/kmom05/
cd me/kmom05/queue
mkdir src
  1. Skapa en fil med namnet src/queue.py i “queue” mappen. Kopiera koden för en Queue och klistra in i queue.py filen.

  2. Skapa en fil med namnet src/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 liststruktur.
    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 en fil med namnet src/errors.py i “queue” mappen. Här skall du skapa ett eget exception med namnet EmptyQueueException. Denna skall lyftas när man använder peek() eller dequeue() på en tom kö.

  6. Byt ut så att main.py använder er egna Queue istället för Pythons.

# Ställ dig i kurskatalogen
dbwebb test queue --extra
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

  • 2023-02-10: (A, aar) Första versionen.

Document source.

Category: oopython.