栈是受限序列,只能在栈顶插入或删除
栈属于序列的特例,故可直接基于向量或列表派生
template <typename T> class Stack public Vector<T> { // 由向量派生的栈模板类
public: // size()、empty()及其它开放接口均可直接沿用
void push(T const & e) { // 入栈
insert(size(), e);
}
T pop() { // 出栈
return remove(size() - 1);
}
T & top() { // 取顶
return (*this)[size() -1];
}
}
队列是受限序列,只能在队尾插入(查询)enqueue() + rear(),只能在队首删除(查询)dequeue() + front()
队列属于序列的特例,亦可直接基于向量或列表派生
template <typename T> class Queue: public List<T> { // 由列表派生的队列模板类
public: // size()与empty()直接沿用
void enqueue(T const & e) { // 入队
insertAsLast(e);
}
T dequeue() { // 出队
return remove(first());
}
T & front() { // 队首
return first() -> data;
}








网友评论