栈的接口与实现
操作与接口
实现
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]; } //取顶:直接返回向量的末元素 }; template <typename T> class Stack: public List<T> { //将列表的首/末端作为栈顶/底 public: //size()、empty()以及其它开放接口,均可直接沿用 void push ( T const& e ) { insertAsLast ( e ); } //入栈:等效于将新元素作为列表的首元素插入 T pop() { return remove ( last() ); } //出栈:等效于删除列表的首元素 T& top() { return last()->data; } //取顶:直接返回列表的首元素 };
操作实例
应用场合
栈应用:进制转换
问题描述
思路
栈应用:括号匹配
栈应用:栈混洗
栈应用:中缀表达式求值
栈应用:逆波兰表达式
队列的接口与实现
操作与接口
实现
template <typename T> class Queue: public List<T> { //队列模板类(继承List原有接口) public: //size()、empty()以及其它开放接口均可直接沿用 void enqueue ( T const& e ) { insertAsLast ( e ); } //入队:尾部插入 T dequeue() { return remove ( first() ); } //出队:首部删除 T& front() { return first()->data; } //队首 };
操作实例