Linköpings Universitet
Institutionen för datavetenskap (IDA)
UPP-gruppen
2014-09-23
Enkellänkade listor
Mål
I denna laboration ska du lära dig att skapa och använda dig av dynamiska datastrukturer och pekare.
Uppgift
Din uppgift är att skapa en dynamisk datastruktur för lagring av heltal samt konstruera ett antal
funktioner (beskrivna nedan) som opererar på denna datastruktur. Den datastruktur som ska skapas
är en enkellänkad lista där varje element har två delar, det data som ska lagras och en pekare till nästa
element. Värdena i listan ska lagras i stigande ordning.
Även om det främst är listan och de funktioner som hanterar listan som är målet med denna laboration
ingår det även att du skapar ett huvudprogram som noggrant testar dina funktioner. Annars är det
svårt att bevisa att de verkligen fungerar.
Del A
I denna del ska du skapa en lista som lagrar heltal. Alla funktioner som du skapar ska vara rekursiva.
I filen List.h ska du skapa en datatyp List Type enligt beskrivningen ovan. Detta implementeras med
en pekare till en posttyp (struct) som i sin tur lagrar ett heltal och en pekare till nästa element i
listan. Det data som lagras i listan ska vara en kopia av det data som stoppas in. Följande funktioner
ska deklareras i filen List.h och definitionen ska skrivas i filen List.cc:
insert
Funktionen insert ska stoppa in ett nytt värde sorterat i listan. Som parametrar ska insert ta den
lista där ett data ska stoppas in samt det data som ska läggas till. Funktionen returnerar true om
operationen gick bra och false om värdet redan finns i listan. Observera att värdet i det senare fallet
inte ska stoppas in.
remove
remove ska ta bort ett specifikt värde ur en lista. remove ska ta två parametrar, en lista och det
värde som ska tas bort. Om värdet finns i listan tas det bort och fuktionen returnerar true, annars
returneras false.
empty
empty returnerar true om det inte finns några lagrade värden i listan som empty tar som parameter,
annars false.
Enkellänkade listor
2014-09-23
member
member kontrollerar om ett visst värde finns i listan. Funktionen ska ta två parametrar, en lista och
ett värde och returerar true om värdet finns i listan annars false.
print
print ska skriva ut en lista. Som parameter ska print ta den lista som ska skrivas ut. Formatet på
utskriften får du bestämma själv. print har inga returvärden.
clear
clear tar bort alla element ur en lista och återställer den så att det går att lagra nya värden i listan.
Som parameter tar clear en lista som ska tömmas.
size
size returnerar längden av listan (antal element). Som parameter ska size ta den lista som ska undersökas.
Del B
Skapa en ny fil List iter.cc. Din uppgift är nu att skriva om de funktioner du skrev i del A så att de
utför uppgifterna iterativt istället för rekursivt. Du ska inte behöva göra några ändringar i filen List.h.