/***********************************************/
用向量实现的栈:
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;
}
/********************************************************/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。