// 链式栈
// Link list-based stack implementation
template <class Elem>
class LStack: public Stack<Elem>
{
private:
Link<Elem>* top; // Pointer to first element
int size; // Count number of elements
public:
LStack(int sz = DefaultListSize) { top = NULL; size = 0;}
~LStack() { clear();} // Destructor
void clear() // Delete link nodes
{
while(top != NULL)
{
Link<Elem>* temp = top;
top = top -> next;
size = 0;
delete temp;
}
}
bool push (const Elem& item)
{
top = new Link<Elem>(item, top);
size++;
return true;
}
bool pop(Elem& it)
{
if (size == 0) return false;
it = top -> element;
Link<Elem>* ltemp = top -> next;
delete top;
top = ltemp;
size--;
return true;
}
bool topValue(Elem& it)const
{
if(size == 0) return false;
it = top -> element;
return true;
}
int length() const { return size; }
};
(2011.07.20) 链式栈 // Link list-based stack implementation
最新推荐文章于 2022-07-11 07:35:00 发布