{"id":214,"date":"2022-01-20T15:56:38","date_gmt":"2022-01-20T14:56:38","guid":{"rendered":"https:\/\/wiskunst.hjgsoft.nl\/?page_id=214"},"modified":"2022-01-24T09:35:01","modified_gmt":"2022-01-24T08:35:01","slug":"rijen-en-stapels","status":"publish","type":"page","link":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/","title":{"rendered":"Rijen en stapels"},"content":{"rendered":"<p>Twee veel voorkomende zaken betreffende pointers zijn de rijen (queue&#8217;s) en stapels (stack&#8217;s).<\/p>\n<p>Een rij kun je vergelijken met bijvoorbeeld een rij bij het postkantoor. Achteraan aansluiten en wachten tot je de voorste bent, en dus hopelijk aan de beurt. Een rij werkt volgens het zogenaamde FIFO-systeem; First In First Out. De meeste pre-emptive besturingssystemen werken met een rij (van uit te voeren opdrachten).<\/p>\n<p>Een stapel kun je vergelijken met een bonnen-pin op een toonbank van een winkel. De laatste bon komt bovenaan de pin. Na sluitingstijd zal de winkeleigenaar de pin van bovenaf weer leeghalen. Een stapel werkt volgens het zogenaamde LIFO-systeem; Last In First Out. De stapel wordt onder meer gebruikt bij recursieve procedures en functies.<\/p>\n<p>De pointer-structuur in Pascal leent zich uitstekend om de rij en de stapel te implementeren.<\/p>\n<h2>De rij.<\/h2>\n<p>Als eerste gaan we naar de rij kijken. We definieren een kop en een staart en een koppeling van links naar rechts, en een aantal bewerkingen.<br \/>\nDe rij kun je je schematisch als volgt voorstellen:<\/p>\n<p>kop \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 staart<br \/>\n1<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2192<\/span>2<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2192<\/span>\u00a03<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2192<\/span>4<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2192<\/span>\u00a0&#8230;<\/p>\n<p>De bewerkingen die we willen hebben zijn:<\/p>\n<ol>\n<li>een item aan de rij toevoegen<\/li>\n<li>een item van de rij afhalen<\/li>\n<li>(alle elementen zien)<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h6>Ad 1: een item toevoegen.<\/h6>\n<p>Om een item aan de rij toe te voegen doorlopen we de volgende stappen:<\/p>\n<ol type=\"a\">\n<li>Maak en vul een nieuw item (huidige), waarbij het veld volgende nil moet zijn<\/li>\n<li>Als de kop nil is, maak de kop gelijk aan huidige (is nu de eerste)<\/li>\n<li>Als de staart niet nil is, maak dan staart^.volgende gelijk aan huidige (staart is nl. nog het laatste element!)<\/li>\n<li>Maak staart gelijk aan huidige (want huidige moet laatste element zijn.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h6>Ad 2: een item afhalen.<\/h6>\n<p>Om een item uit de rij te halen (volgens FIFO) doorlopen we de volgende stappen:<\/p>\n<ol type=\"a\">\n<li>Maak huidige gelijk aan de kop<\/li>\n<li>Als huidige niet nil is dan<\/li>\n<li>\u00a0\u00a0verwerk de waarde(s) van huidige<\/li>\n<li>\u00a0\u00a0maak huidige gelijk aan huidige^.volgende<\/li>\n<li>\u00a0\u00a0verwijder de kop (Dispose(kop))<\/li>\n<li>\u00a0\u00a0maak kop gelijk aan de huidige.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h6>Voorbeeldje<\/h6>\n<p>Om bovenstaande te illustreren volgt nu een voorbeeldje:<\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">program drij;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">type<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 pRij = ^tRij;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 tRij = record<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 waarde: integer;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 volgende: pRij;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 kop, staart: pRij;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">procedure VoegToe(w: integer);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige: pRij;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 new(huidige); {1a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige^.waarde := w; {1a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige^.volgende := nil; {1a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if kop = nil then {1b}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 kop := huidige;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if staart &lt;&gt; nil then {1c}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 staart^.volgende := huidige;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 staart := huidige; {1d}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">procedure LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige: pRij;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 write(&#8216;Rij = &#8216;);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige := kop;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 while huidige &lt;&gt; nil do<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 write(huidige^.waarde:8);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 huidige := huidige^.volgende;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 end;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">function HaalAf: integer;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige: pRij;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige := kop; {2a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if huidige &lt;&gt; nil then {2b}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 HaalAf := huidige^.waarde; {2c}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 huidige := huidige^.volgende; {2d}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 dispose(kop); {2e}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 kop := huidige; {2f}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 end<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 else<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 HaalAf := -MaxInt; {slechts om aan te geven dat de rij leeg is}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 kop := nil;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 staart := nil;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 VoegToe(1);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 VoegToe(2);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 VoegToe(3);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(HaalAf);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(HaalAf);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(HaalAf);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(HaalAf);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end.<\/span><\/p>\n<h2>De stapel.<\/h2>\n<p>De stapel lijkt op de rij. Alleen draaien we als het ware de kop en de staart om. Ook de verwijzing loopt precies de andere kant op.<br \/>\nSchematisch stellen we ons de stapel als volgt voor:<\/p>\n<p>staart \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 kop<br \/>\n1<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2190<\/span>2<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2190<\/span>\u00a03<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2190<\/span>4<sup>e<\/sup>\u00a0element<span style=\"font-family: Arial Unicode MS;\">\u2190<\/span>\u00a0&#8230;<\/p>\n<p>De bewerkingen zijn natuurlijk hetzelfde als bij de rij, alleen hebben ze nu speciale namen.<br \/>\nIets op de stapel zetten heet &#8216;Push&#8217; en iets van de stapel halen heet &#8216;Pop&#8217;.<\/p>\n<h6>1: Push<\/h6>\n<p>Om een item aan de stapel toe te voegen doorlopen we de volgende stappen:<\/p>\n<ol type=\"a\">\n<li>Maak en vul een nieuw item (huidige)<\/li>\n<li>Als de staart nil is, maak dan de staart gelijk aan de huidige<\/li>\n<li>Als de kop nil is, maak dan het veld huidige^.vorige gelijk aan nil<\/li>\n<li>\u00a0\u00a0maak anders (kop &lt;&gt; nil) het veld huidige^.vorige gelijk aan de kop<\/li>\n<li>Maak kop gelijk aan huidige<\/li>\n<\/ol>\n<h6>2: Pop<\/h6>\n<p>Om een item van de stapel af te halen doorlopen we de volgende stappen:<\/p>\n<ol type=\"a\">\n<li>Maak huidige gelijk aan kop<\/li>\n<li>Als huidige niet nil is dan<\/li>\n<li>\u00a0\u00a0verwerk de waarde(s) van huidige<\/li>\n<li>\u00a0\u00a0maak huidige gelijk aan huidige^.vorige<\/li>\n<li>\u00a0\u00a0verwijder de kop (Dispose(kop))<\/li>\n<li>\u00a0\u00a0maak kop gelijk aan de huidige<\/li>\n<\/ol>\n<h6>Voorbeeldje<\/h6>\n<p>Om de stapel te illustreren volgt hier een voorbeeldje (analoog aan het vorige):<\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">program dstapel;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">type<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 pStapel = ^tStapel;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 tStapel = record<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 waarde: integer;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 vorige: dStapel;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 kop, staart: pStapel;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">procedure Push(w: integer);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige: pStapel;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 new(huidige); {1a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige^.waarde := w; {1a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if staart = nil then {1b}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 staart := huidige;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if kop = nil then {1c}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 huidige^.vorige := nil<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 else {1d}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 huidige^.vorige := kop;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 kop := huidige; {1e}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">procedure LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 huidige : pStapel;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige := kop;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 write(&#8216;Stapel = &#8216;);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 while huidige &lt;&gt; nil do<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 write(huidige^.waarde:8);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 huidige := huidige^.vorige;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 end;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">function Pop: integer;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 var<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige: pStapel;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 huidige := kop; {2a}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if huidige &lt;&gt; nil then {2b}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 Pop := huidige^.waarde; {2c}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 huidige := huidige^.vorige; {2d}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 dispose(kop); {2e}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 kop := huidige; {2f}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 end<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 else<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 Pop := -MaxInt; {slechts om aan te geven dat de stapel leeg is}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 kop := nil;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 staart := nil;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 Push(1);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 Push(2);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 Push(3);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(Pop);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(Pop);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(Pop);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 LaatZien;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 writeln(Pop);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end.<\/span><\/p>\n<h2>Oefeningen.<\/h2>\n<p><a name=\"14.1\"><\/a><b>14.1<\/b><br \/>\nImplementeer een simulatie m.b.v. een stack van de recursieve functie Fac(waarde: byte): integer.<br \/>\nGebruik de juiste type-definitie&#8217;s alsmede een procedure Push en een functie Pop.<br \/>\nDenk er even over na hoe je bepaalt of de stapel leeg is, en verzin hiervoor dus een oplossing.<br \/>\nTest met Fac(5) (moet 120 als uitkomst hebben).<\/p>\n<p> [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#14.1\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p> [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/pointers\/\">Pointers<\/a>] &lt;&#8211;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Twee veel voorkomende zaken betreffende pointers zijn de rijen (queue&#8217;s) en stapels (stack&#8217;s). Een rij kun je vergelijken met bijvoorbeeld een rij bij het postkantoor. Achteraan aansluiten en wachten tot je de voorste bent, en dus hopelijk aan de beurt. Een rij werkt volgens het zogenaamde FIFO-systeem; First In First Out. De meeste pre-emptive besturingssystemen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":185,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/template-full-width.php","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"class_list":["post-214","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rijen en stapels - Wiskunst<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rijen en stapels - Wiskunst\" \/>\n<meta property=\"og:description\" content=\"Twee veel voorkomende zaken betreffende pointers zijn de rijen (queue&#8217;s) en stapels (stack&#8217;s). Een rij kun je vergelijken met bijvoorbeeld een rij bij het postkantoor. Achteraan aansluiten en wachten tot je de voorste bent, en dus hopelijk aan de beurt. Een rij werkt volgens het zogenaamde FIFO-systeem; First In First Out. De meeste pre-emptive besturingssystemen [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/\" \/>\n<meta property=\"og:site_name\" content=\"Wiskunst\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-24T08:35:01+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/rijen-en-stapels\\\/\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/rijen-en-stapels\\\/\",\"name\":\"Rijen en stapels - Wiskunst\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\"},\"datePublished\":\"2022-01-20T14:56:38+00:00\",\"dateModified\":\"2022-01-24T08:35:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/rijen-en-stapels\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/rijen-en-stapels\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/rijen-en-stapels\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmeren\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Programmeren met Pascal\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Rijen en stapels\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/\",\"name\":\"Wiskunst\",\"description\":\"2\u221e\u2227&gt;\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wiskunst.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rijen en stapels - Wiskunst","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/","og_locale":"nl_NL","og_type":"article","og_title":"Rijen en stapels - Wiskunst","og_description":"Twee veel voorkomende zaken betreffende pointers zijn de rijen (queue&#8217;s) en stapels (stack&#8217;s). Een rij kun je vergelijken met bijvoorbeeld een rij bij het postkantoor. Achteraan aansluiten en wachten tot je de voorste bent, en dus hopelijk aan de beurt. Een rij werkt volgens het zogenaamde FIFO-systeem; First In First Out. De meeste pre-emptive besturingssystemen [&hellip;]","og_url":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/","og_site_name":"Wiskunst","article_modified_time":"2022-01-24T08:35:01+00:00","twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"5 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/","url":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/","name":"Rijen en stapels - Wiskunst","isPartOf":{"@id":"https:\/\/wiskunst.nl\/#website"},"datePublished":"2022-01-20T14:56:38+00:00","dateModified":"2022-01-24T08:35:01+00:00","breadcrumb":{"@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/rijen-en-stapels\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wiskunst.nl\/"},{"@type":"ListItem","position":2,"name":"Programmeren","item":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/"},{"@type":"ListItem","position":3,"name":"Programmeren met Pascal","item":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/"},{"@type":"ListItem","position":4,"name":"Rijen en stapels"}]},{"@type":"WebSite","@id":"https:\/\/wiskunst.nl\/#website","url":"https:\/\/wiskunst.nl\/","name":"Wiskunst","description":"2\u221e\u2227&gt;","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wiskunst.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"}]}},"_links":{"self":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/comments?post=214"}],"version-history":[{"count":6,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/214\/revisions"}],"predecessor-version":[{"id":539,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/214\/revisions\/539"}],"up":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/185"}],"wp:attachment":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/media?parent=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}