Datastructuren
PiL: Programmeren is Leuk!
Het is niet alleen leuk,
maar ook heel leerzaam, om diverse methoden uit te programmeren
die in Datastructuren worden behandeld.
Je kunt dan experimenteren met verschillende varianten,
en kijken wat wel of niet snel werkt in bepaalde situaties.
Hieronder vind je diverse "PILletjes",
kleine codevoorbeelden die je kunt gebruiken
als startpunt van je experimenten.
- TelSort:
Een lineair algoritme om integers te sorteren.
Breid het uit naar Longs.
Kan het goed met negatieve getallen omgaan?
Kun je het sneller maken?
Waarom gebruikt het twee passes en niet drie of vier?
- FruitPlanner:
Danny moet van zijn moeder vitamines eten,
maar hij wil het niet overdrijven
en zoekt een combinatie met exact de juiste hoeveelheid.
Regel 1: aantal fruitsoorten en vitaminevoorschrift.
Regel 2: namen van het fruit.
Regel 3: vitamines in het fruit.
(Eh, ik wil niet moeilijk doen of zo,
en dit PILletje lijkt me zeker leerzaam,
maar er zit wel een bug in, hoor!)
- The
Sound of Sorting:
Niet echt een PiLletje misschien, maar wel leuk!
Zet vooral even je speakers op 10 want de sorteergeluiden
zijn echt hilarisch.
- BincoStack:
Een recursieve berekening van getallen
uit de Driehoek van Pascal,
en een versie met Stack van bijna hetzelfde.
- StackHanoi:
Bereken met een Stack, maar zonder Recursie,
een reeks van zetten om je Hanoi-puzzle op te lossen.
- A2BFS:
In hoeveel stappen kun je van A naar B
met de operaties Increment en Double (en evt. Mineen)?
Een typisch klusje voor Breadth First Search,
te bouwen met een Queue.
- SList:
ADS Dictionary geprogrammeerd als Sorted List
waarbij ref argumenten (Call by Reference) zijn gebruikt.
Programmeer de Insert en Delete eens uit
met en zonder Call by Reference.
- Tree:
Hier is een begin gemaakt met het programmeren
van binaire zoekbomen,
waarbij er geen parent-pointers worden gebruikt
en de bomen worden meegegeven als ref-parameter.
Breid het programma uit met Delete,
en eventueel met balancering.
Programmeer ook de range query
(alle keys tussen a en b) en test de complexiteit.