Algoritmer och datastrukturer TF3 Sy
samt
Algoritmer och datastrukturer med objektorienterad programmering

Veckouppgift för vecka 10

Utöka klassen List med en metod List* List::platt(). Den anropade listan kan som element innehålla tecken (char) eller listor, som i sin tur kan innehålla tecken eller listor, osv. Metoden returnerar en lista av char.

Listan som returneras ska innehålla samma tecken som den anropade listan, i samma ordning. (Den ordning som skulle ges av anteckningarnas utskriftsrutiner.)

I den returnerade listan ska alla element förekomma på toppnivå, alla element i den returnerade listan ska med andra ord vara tecken, ej listor.

Metoden ska skrivas rekursivt.

Ingen felhantering behövs. Efter exekveringen av platt() ska den anropade listan finnas kvar.

Du ska utnyttja de redan givna primitiverna på ett relevant sätt.

Du ska också på ett relevant sätt använda virtuella funktioner för att hantera listor som kan innehålla både tecken och listor som element.

Exempel

(a b a a)        ska ge       (a b a a)
(a (b))          ska ge       (a b)
(a (b a (a)) b)  ska ge       (a b a a b)

Anvisningar

Redovisa programkod, samt där så krävs i uppgiftsformulering de olika stegen i arbetsmetodiken. Därutöver krävs ingen dokumentation.

För handledning på denna uppgift hänvisas till Datortekniks jourhavande handledare eller Fredriks handledningstider


Uppgifterna lämnas in enligt anvisningarna i kursplanen.

Notera att uppgifter som lämnas in på annat sätt, eller vid senare tidpunkt, inte kommer att beaktas.

Försättsblad finns här.


Fredrik Larsson <fredrikl@DoCS.UU.SE>
Anders Berglund <Anders.Berglund@DoCS.UU.SE>
Last modified: Wed Feb 18 16:35:26 MET 1998