Algoritmer och datastrukturer TF3 Sy

samt
Algoritmer och datastrukturer med objektorienterad programmering, fristående kurs


Veckouppgift för vecka 9

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)


För handledning hänvisas till DoCS jourhavande handledare
Uppgifterna lämnas in enligt anvisningarna i kursplanen i Johan Bengtssons postfack med rätt försättsblad

OBS: Sökväg till källkod och körbar fil skall gälla på Datortekniks undervisningssystem, d.v.s. systemen i hus 1.


Anders Berglund
Last modified: Tue Feb 6 17:54:37 1996