#ifndef stack_h #define stack_h const int MAX = 50; class StackIterator; class Stack { friend class StackIterator; int top; int elems[MAX]; public: void push(int i) { elems[top++]=i; } int pop() { return elems[--top]; } int empty() { return top == 0; } void init() { top = 0; } }; Stack* createStack(); class StackIterator { int current; Stack* st; public: void init(Stack* s) { st = s; current = 0; } int end() { return st->top == current; } int next() { return st->elems[current++]; } }; #endif