mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
73 lines
1.6 KiB
C++
73 lines
1.6 KiB
C++
#include "ataxx.h"
|
|
// stapel.cpp
|
|
|
|
linkedlist::linkedlist() {
|
|
// standaard constructor
|
|
vorige = NULL;
|
|
volgende = NULL;
|
|
stelling = NULL;
|
|
}
|
|
|
|
linkedlist::linkedlist (int kolommen, int rijen) {
|
|
// constructor (overloaded)
|
|
vorige = NULL;
|
|
volgende = NULL;
|
|
stelling = new ataxxbord (kolommen, rijen);
|
|
}
|
|
|
|
linkedlist::~linkedlist() {
|
|
// destructor
|
|
delete stelling;
|
|
}
|
|
|
|
stapel::stapel() {
|
|
// constructor
|
|
lijst = new linkedlist;
|
|
}
|
|
|
|
stapel::~stapel() {
|
|
// destructor
|
|
delete lijst;
|
|
}
|
|
|
|
void stapel::zetopstapel (const ataxxbord * bord) {
|
|
// zet een bordstelling op de stapel
|
|
|
|
int x,y; // hulpvariabelen om door het veld te itereren
|
|
linkedlist * hulp; // hulpvariabele
|
|
|
|
// voeg het bord toe aan de linked list
|
|
hulp = lijst;
|
|
lijst = new linkedlist (bord->maxkolom, bord->maxrij);
|
|
hulp->volgende = lijst;
|
|
lijst->vorige = hulp;
|
|
// en vul ook de velden goed in
|
|
// (dat gebeurt automatisch want het is een dynamische array)
|
|
for (x=0;x<bord->maxkolom;x++) {
|
|
for (y=0;y<bord->maxrij;y++) {
|
|
lijst->stelling->veld[x][y] = bord->veld[x][y];
|
|
}
|
|
}
|
|
}
|
|
|
|
void stapel::haallaatstevanstapel() {
|
|
// haal het laatste element (bord/stelling) van de stapel
|
|
|
|
linkedlist * hulp; // hulpvariabele
|
|
|
|
// alleen als de pointers naar echte objecten verwijzen
|
|
// ook daadwerkelijk tot het verwijderen overgaan
|
|
if ( lijst != NULL ) {
|
|
if ( lijst->vorige != NULL ) {
|
|
hulp = lijst->vorige;
|
|
delete lijst;
|
|
lijst = hulp;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool stapel::isstapelleeg() {
|
|
// test of een stapel leeg is
|
|
if ( lijst == NULL ) return true;
|
|
else return false;
|
|
}
|