C++栈Stack模板(顺序存储)
const int max_size = 100;
template<typename Stack_entry>
class Stack
{
public:
Stack() :count(0) {}
void push(const Stack_entry &x);
void pop();
const Stack_entry &top() const;
size_t size() const { return count; }
void clear() { count = 0; }
bool empty() const { return count == 0; }
bool full() const { return count == max_size; }
private:
size_t count;
Stack_entry entry[max_size] = {};
};
template<typename Stack_entry>
void Stack<Stack_entry>::push(const Stack_entry &x)
{
if (!full()) entry[count++] = x;
}
template<typename Stack_entry>
void Stack<Stack_entry>::pop()
{
if (!empty()) --count;
}
template<typename Stack_entry>
const Stack_entry &Stack<Stack_entry>::top() const
{
if(!empty()) return entry[count - 1];
return Stack_entry();
}