c++ 模板实现顺序表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 模板实现顺序表相关的知识,希望对你有一定的参考价值。
/************************************ WZ ASUST 2016 顺序表 第二个模板 ************************************/ #include"wz.h" #include"sts.h" template <typename T> class seqlist { public: seqlist() :_data(NULL) ,_size(0) ,_capacity(0) { CheckCapacity(); } /*seqlist(const T& d) :_data(d._data) ,_size(d._size) ,_capacity (d._capacity) { } }*/ ~seqlist() { if(_data!=NULL) delete [] _data; } public: void CheckCapacity() { if(_size == _capacity) { T* tmp=new T[2*_capacity+3]; memcpy(tmp,_data,_size*sizeof(T)); delete _data; _data = tmp; _capacity =2*_capacity+3 ; } } public: void PushBack(const T& d); void PopBack(); void PushFront(const T& d); void PopFront(); void Insert(const size_t pos, const T& x); void Erase(const size_t pos); int Find(const T& x); void reverse(); void Print() { int i=0; for(i=0;i<_size;i++) { cout<<_data[i]<<" "; } cout<<endl; } private: T* _data; int _size; int _capacity; }; template <typename T> void seqlist<T>:: PushBack(const T& d) { CheckCapacity(); _data[_size] = d; _size++; } template <typename T> void seqlist<T>:: PopBack() { if(_data == NULL) { return; } _size--; } template <typename T> void seqlist<T>:: PushFront(const T& d) { CheckCapacity(); int i=0; for(i=_size;i>0;--i) { _data[i] = _data[i-1]; } _data[i] = d; ++_size; } template <typename T> void seqlist<T>::PopFront() { int i=0; for(i=0;i<_size;i++) { _data[i-1] = _data[i]; } --_size; } template<typename T> void seqlist<T>::Insert(const size_t pos, const T& x) { CheckCapacity (); int i=0; for(i=_size;i>pos;--i) { _data[i] = _data[i-1]; } _data[i]=x; ++_size; } template<typename T> void seqlist<T>::Erase(const size_t pos) { int i = 0; for(i=pos;i<_size-1;i++) { _data[i] = _data[i+1]; } --_size; } template<typename T> int seqlist<T>::Find(const T& x) { int i=0; for(i=0;i<_size;i++) { if(_data[i]== x) return i; } return -1; } template<typename T> void seqlist<T>::reverse( ) { int i=0,j; T tmp; for(i,j=_size-1;i<j;i++,j--) { tmp=_data[i]; _data[i]=_data[j]; _data[j]=tmp; } } //void Test1() //{ // seqlist<int> s1; // s1.PushBack(1); // s1.PushBack(2); // s1.PushBack(3); // s1.PushBack(4); // s1.Print(); //} //void Test2() //{ // seqlist<int> s1; // s1.PopBack(); //} //void Test3() //{ // seqlist<int> s1; // s1.PopFront(); //} //void Test4() //{ // seqlist<int> s1; // s1.PushFront(1); // s1.PushFront(2); // s1.PushFront(3); // s1.PushFront(4); // //template <typename T> int main() { seqlist<int> s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PopBack(); s1.Print(); s1.PushFront(5); s1.Print(); s1.PopFront(); s1.Print(); s1.Insert(2,5); s1.Print(); s1.Erase(2); cout<<"wzzx"<<endl; s1.Print(); s1.Find(2); cout<<"wzzx2"<<endl; s1.reverse(); s1.Print(); return 0; }
以上是关于c++ 模板实现顺序表的主要内容,如果未能解决你的问题,请参考以下文章