Uppgift 2 våren 2012Uppgiften ska lämnas till din övningsledare på övningen den 27/1. För godkänt måste du ha gjort samtliga deluppgifter. Det är tillåtet att göra enstaka fel och misstag men det är viktigt att du försöker lösa samtliga uppgifter. Om du kör fast med någon uppgift så finns det som vanligt hjälp att få på labbarna. HemuppgiftStudera kapitel 9 i programmeringsboken. Skriftlig uppgiftArv i JavaLämna in lösningar till uppgift 9.12-9.17 i programmeringsboken. Länkade listorEn lista, ett antal element ordnade i en linjär struktur, är den kanske enklaste och mest grundläggande datastrukturen. Java erbjuder flera implementationer av listor:
En länkad lista är en sekvens av listelement förbundna av pekare. En länkad lista med tre heltal [2, 2, 1] ser ut så här.
---------- ---------- ---------- | | | | | | | | | --->| 2 | -------->| 2 | -------->| 1 |null| | | | | | | | | | ---------- ---------- ---------- Listelementen kan implementeras som objekt med två instansvariabler, en variabel som innehåller nodens värde och en variabel som pekar på nästa element i listan:
class ListElement { int data; ListElement next; } Implementera en enkellänkad lista. Ett kodskelettet finns i filen LinkedList.java Du får inte ändra klassens gränssnitt, dvs du får inte ändra signaturerna på de publika metoderna i klassen LinkedList eller lägga till några andra publika metoder. Beräkna den asymptotiska värstafallstiden för samtliga publika metoder i din implementation. Uttryck tiden som en funktion av antalet element n i listan. Du ska även skriva utförlig testkod. Alla publika metoder ska testas. Glöm inte att kontrollera att din kod fungerar även för den tomma listan. Jag rekommenderar att du skriver testkoden först. Som vanligt ska du lämna in en utskrift av all kod – dvs även testkoden. Det kan vara svårt att testa datastrukturer; en metod kan returnera rätt svar men ändå göra fel. Det händer till exempel om den lämnar efter sig instansvariabler med felaktiga värden. En bra sätt att upptäcka den typen av fel är att använda en testmetod som undersöker om listan befinner sig i ett korrekt tillstånd:
Du ska implementera en metod |