栈
来源:互联网 发布:泉州用友软件 编辑:程序博客网 时间: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]; }};
阅读全文
0 0