来源:互联网 发布:泉州用友软件 编辑:程序博客网 时间:2024/05/29 19:07

链表实现

template <typename T>class stack: public list<T> {public:    void push ( T const& e ) { this->insertAsLast ( e ); }    T pop() { return this->remove ( this->last() ); }    T& top() { return this->last()->data; }};

数组实现

typedef int dataType;typedef int rank;class linerList {private:    rank capacity=99999;    dataType* value = new dataType[capacity];    rank _size=0;public:    rank size(){        return _size;    }    dataType operator[] ( rank r ) const {        return value[r];    }    void insert(rank pos,dataType val){        for(rank i=_size-1;i>pos;i--)            value[i+1]=value[i];        value[pos]=val;        _size+=1;    }    dataType remove(rank pos){        dataType tem = value[pos];        for(rank i=pos;i<_size-1;i++)            value[i]=value[i+1];        _size-=1;        return tem;    }    void expand() {        dataType * oldValue = value;        value = new dataType[capacity <<= 1];        for ( int i = 0; i < _size; i++ )            value[i] = oldValue[i];        delete [] oldValue;    }    //入栈:等效于将新元素作为向量的末元素插入    void push ( dataType const& e ){        insert ( size(), e );    }    //出栈:等效于删除向量的末元素    dataType pop() {        return remove(size() - 1);    }    //取顶:直接返回向量的末元素    dataType& top() { return value[size() - 1];    }};
原创粉丝点击