// sl-4-BA : Der ADT Stack #include "stack.h" struct Stack { DataType value; StackPtr next; }; void empty(StackPtr & s) { while (!is_empty(s)) { pop(s); } // s = 0; würde auch funktionieren, Speicher würde aber nicht freigegeben } bool is_empty(const StackPtr s) { return s==0; // Kurzform von if (s==0) { return true; } else { return false; } } void push(StackPtr & s, const DataType value) { StackPtr node = new Stack; node->value = value; node->next = s; s = node; } void pop(StackPtr & s) { // s darf nicht 0 sein! // die aufrufende Funktion muss ggf. mit is_empty(s) prüfen, ob s leer ist StackPtr tbd = s; // Zeiger für oberstes Element merken s = s->next; delete tbd; } DataType top(const StackPtr s) { // s darf nicht 0 sein! // die aufrufende Funktion muss ggf. mit is_empty(s) prüfen, ob s leer ist return s->value; }