// Stack.template template Stack::Stack() { s_ = NULL; size_ = 0; capacity_ = 0; } template Stack::~Stack() { delete [] s_; } template bool Stack::top(Item &item) const { if (size_ > 0) { item = s_[size_-1]; return true; } else return false; } template bool Stack::push(const Item &item) { if (size_ == capacity_) { resize(); } if (size_ != capacity_) { s_[size_] = item; size_++; return true; } else return false; } template bool Stack::pop(Item &item) { if (size_ > 0) { size_--; item = s_[size_]; return true; } else return false; } template void Stack::resize() { Item *temp; int i; if (capacity_ == 0) { capacity_ = 4; } else { capacity_ = 2 * capacity_; } temp = new Item[capacity_]; for (i=0; i