c++实现顺序表

来源:互联网 发布:dnf额外暴击伤害算法 编辑:程序博客网 时间:2024/06/06 00:19
//c++实现顺序表#include<iostream>#include<stdlib.h>#include<assert.h>typedef int DataType;using namespace std;class SeqList{public:SeqList(size_t size=0,size_t capatity=3,DataType* pData=NULL):_size(size),_capatity(size+1){_pData=new DataType[_capatity*sizeof(DataType)]; for(DataType indx=0;indx<size;indx++){_pData[indx]=pData[indx];}}SeqList(const SeqList&s):_size(s._size),_capatity(s._capatity){_pData=new DataType[_capatity*sizeof(DataType)];for(int indx=0;indx<s._size;indx++){_pData[indx]=s._pData[indx];}}    void Display(){for(int indx=0;indx<_size;indx++){cout<<_pData[indx]<<" ";}cout<<endl;}~SeqList(){delete[] _pData;_pData=NULL;}public:void Pushback(DataType data){if(_size==_capatity){Checkcapatity(_capatity*2);}_pData[_size++]=data;}void Popback(){if(--_capatity){_pData[_size--];} if(_size==0){cout<<"NULL"; }}void PushFront(DataType data){Checkcapatity(_size);for(int indx=_size-1;indx>=0;indx++){_pData[indx+1]=_pData[indx];}_pData[0]=data;_size++;}void PopFront(){if(_size<=0){cout<<"NULL";return;}else{for(int indx=0;indx<_size;indx++){_pData[indx]=_pData[indx+1];}--_size;}}void Insert(size_t pos,DataType data){if(pos==0){Pushback(data);}else{   int end=_size;for(int indx=end-1;indx>=pos;indx--){_pData[indx+1]=_pData[indx];}}++_size;}void Erase(DataType data){int count=0;for(int indx=0;indx<_size;indx++){if(_pData[indx]==data){count++;}else{_pData[indx-count]=_pData[indx];}_size-=count;}}int Find(DataType data){for(int indx=0;indx<_size;indx++){if(_pData[indx]==data){return indx;}}return -1;}void Checkcapatity(size_t size){if(size>=_capatity){_pData=(DataType*)realloc(_pData,size*sizeof(DataType)+1);assert(_pData);_capatity=size;}}private:size_t _size;size_t _capatity;DataType* _pData;};void main(){int arr[9]={1,2,3,4,5,6,7,8,9};SeqList s1(9,10,arr);SeqList s2(s1);s1.Pushback(10);s1.Display();s2.Display();system("pause");}

原创粉丝点击