/***********************************************/ 用向量实现的栈: template <typename T> struct Stack : private std::vector<T> { //向量栈从向量类模板派生; typedef std::vector<T> Base; //vector的别名为Base; Stack(void) : Base(void) { } //构造空栈; bool empty(void)const{ return Base::empty();} //判空函数; int size(void)const{ return Base::size(); } //返回栈中元素个数; T& top(void){ return Base::back(); } //返回对栈顶元素的引用; void pop(void){ Base::pop_back(); } //弹栈; void push(T const& v){ Base::push_back(v); } //压栈; void clear(void){ Base::clear(); } //清空函数; }; 向量栈类是从向量类派生出来的类结构,它只具有向量类模板 容器的某些功能;是一种后进先出的容器结构; /***********************************************/ /******************************************************/ Lstack用单量表实现的栈: template <typename T> struct Lstack : private Slist<T> { //单链表栈从单链表类模板中私有派生; typedef Slist<T> Base; //单链表类型的别名Base; Lstack(void) : Base(void){ } //构造空栈; bool empty(void)const{ return Base::empty(); }//判空函数; int size(void)const{ return Base::size(); } //返回栈中元素个数; T& top(void){ return Base::front(); } //返回对栈顶元素的引用; void pop(void){ Base::pop_front(); } //弹栈; void push(T const& v){ Base::push_front(v); } //压栈; void clear(void){ Base::clear(); } //清空函数; }; 单链表栈类是单链表类模板的派生类,之有它的部分功能; 是后进先出的存储结构,只能操作栈顶节点; /*****************************************************/ /*****************************************************/ 用不同进制输出整数(栈的应用) string print(int value, int base = 10) { string digit_char = "0123456789ABCDEF"; string result = ""; if(value < 0) { value = -value; result += "-"; } stack<char> stk; do{ stk.push(digit_char[value % base]); value /= base; } while(value > 0); while(!stk.empty()) { result += stk.top(); stk.pop(); } return result; } /********************************************************/ |
|
来自: BUPT-BYR > 《cpp类模板及树相关》