Naar de inhoudNieuw: Study Games · gratis met een account
StudyZone
COMMUNITY

Samenvatting · Informatica · vwo 5 Datastructuren: lijst, stack, queue, boom, graaf en dictionary

StudyZone
InformaticaVak
WAT ZIT ERIN
1Een programma werkt met gegevens, en hoe je die organiseert bepaalt hoe makkelijk en snel je ze kunt gebruiken. Zo'n manier van organiseren heet een datastructuur. Na deze samenvatting ken je de belangrijkste datastructuren, hun operaties en wanneer je welke kiest. Array…

Bewaar deze samenvatting

Een programma werkt met gegevens, en hoe je die organiseert bepaalt hoe makkelijk en snel je ze kunt gebruiken. Zo'n manier van organiseren heet een datastructuur. Na deze samenvatting ken je de belangrijkste datastructuren, hun operaties en wanneer je welke kiest.

Array en lijst

Een array of lijst is een rij elementen die je met een index bereikt. De index begint meestal bij 0: in [4, 8, 15, 16] is het element op index 2 gelijk aan 15.

  • Een element op een bekende index lezen gaat snel, in constante tijd.
  • Een element ergens in het midden invoegen of weghalen kost meer, want alle volgende elementen moeten opschuiven.
  • Zoeken in een ongesorteerde lijst kost in het slechtste geval stappen.

Stack

Een stack (stapel) werkt volgens het principe LIFO: last in, first out. Het laatst toegevoegde element komt als eerste weer eruit. De operaties zijn:

  • push(x): zet x bovenop de stack.
  • pop(): haal het bovenste element weg en geef het terug.
  • peek(): bekijk het bovenste element zonder het te verwijderen.
Voorbeeld
een lege stack. push(1), push(2), push(3), pop() geeft 3 terug, dan push(4). De stack bevat nu (van onder naar boven) 1, 2, 4.

Toepassingen: de ongedaan maken-knop, de call stack van functieaanroepen, het controleren of haakjes in een formule goed zijn gesloten, en de terug-knop in een browser.

Queue

Een queue (wachtrij) werkt volgens het principe FIFO: first in, first out. Het eerst toegevoegde element komt eerst aan de beurt. De operaties zijn:

  • enqueue(x): zet x achteraan de rij.
  • dequeue(): haal het voorste element weg en geef het terug.
Voorbeeld
een lege queue. enqueue(1), enqueue(2), enqueue(3), dequeue() geeft 1 terug, dan enqueue(4). De volgorde (voor naar achter) is nu 2, 3, 4, en het volgende dat verwijderd wordt is 2.

Toepassingen: een printerwachtrij, verzoeken die een server afhandelt, de volgorde van taken in een besturingssysteem.

Boom

Een boom is een hiërarchische structuur van knopen die met elkaar verbonden zijn. De bovenste knoop is de wortel. Een knoop heeft hoogstens één ouder en nul of meer kinderen; een knoop zonder kinderen heet een blad. De hoogte van de boom is het aantal niveaus van de wortel tot het laagste blad.

Een binaire boom heeft per knoop hoogstens twee kinderen. Een binaire zoekboom is een binaire boom waarin voor elke knoop geldt: alles in de linkerdeelboom is kleiner en alles in de rechterdeelboom is groter. Daardoor kun je net als bij binair zoeken in elke stap de helft van de boom overslaan.

Voorbeeld
voeg 50, 30, 70, 20 en 40 achtereenvolgens toe aan een lege binaire zoekboom. 50 is de wortel; 30 is kleiner en komt links; 70 is groter en komt rechts; 20 komt links van 30; 40 komt rechts van 30. Loop je de boom in volgorde door (links, knoop, rechts), dan krijg je 20, 30, 40, 50, 70: gesorteerd.

In een evenwichtige binaire zoekboom met knopen duurt zoeken ongeveer stappen. Is de boom scheef (bijvoorbeeld bij het toevoegen van reeds gesorteerde data), dan degenereert hij tot een lijst en duurt zoeken stappen.

Bomen zie je ook in mappenstructuren, stambomen en de HTML-structuur van een webpagina.

Graaf

Een graaf bestaat uit knopen (punten) en kanten (verbindingen). Anders dan bij een boom mogen er kringen in zitten en kan een knoop meerdere "ouders" hebben. Kanten kunnen een richting hebben en een gewicht (bijvoorbeeld een afstand). Voorbeelden: een wegennetwerk, een sociaal netwerk, het internet. Algoritmen zoals die voor de kortste route werken op grafen.

Dictionary

Een dictionary (of map) bewaart sleutel-waardeparen. Je zoekt een waarde op via de sleutel, bijvoorbeeld een telefoonnummer op naam. Achter de schermen gebruikt een dictionary vaak een hashtabel, waarmee opzoeken gemiddeld in constante tijd gaat.

Welke kies je?

situatiepassende structuur
rij elementen op positielijst of array
laatste actie ongedaan makenstack
eerlijke afhandeling in volgorde van binnenkomstqueue
snel zoeken én gesorteerd houdenbinaire zoekboom
opzoeken op naamdictionary
verbindingen tussen dingengraaf

Let op

  • Stack is LIFO, queue is FIFO. Wissel ze niet om.
  • pop() geeft het bovenste element terug én haalt het weg; peek() haalt niets weg.
  • Een boom is een speciale graaf zonder kringen met één wortel.
  • Een zoekboom werkt alleen snel als hij redelijk in balans is.

In het kort

  • Een lijst bereik je met een index die bij 0 begint.
  • Stack is LIFO (push, pop, peek); queue is FIFO (enqueue, dequeue).
  • Een binaire zoekboom heeft links kleinere en rechts grotere waarden; in-order doorlopen geeft gesorteerde data.
  • Een graaf heeft knopen en kanten en mag kringen bevatten; een boom niet.
  • Een dictionary zoekt een waarde op via een sleutel.

Staat hier iets dat niet klopt of niet hoort? .

Probeer het met je volgende toets

Beginnen is gratis, zonder betaalgegevens.

Begin gratis