/*
 * sstack.cpp
 *
 *  Created on: 17.10.2013
 *      Author: trifon
 */

#include "stack.h"

#define MAX 100

template <typename T>
class SStack : public Stack<T> {
private:
	T stack[MAX];
	int last;
public:
	SStack() : last(-1) {}
	bool empty() const {
		return last == -1;
	}

	bool push(T const& x) {
		if (last == MAX - 1)
			return false;
		stack[++last] = x;
		return true;
	}

	bool pop(T& x) {
		if (empty())
			return false;
		// !empty
		// last >= 0
		x = stack[last--];
		return true;
	}

	bool top(T& x) const {
		if (empty())
			return false;
		x = stack[last];
		return true;
	}
};