分享

向量及单链表实现栈的界面

 BUPT-BYR 2010-12-20
/***********************************************/
用向量实现的栈:
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;
}
/********************************************************/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多