c++实现顺序表
2017-07-27 22:49
411 查看
//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"); }
相关文章推荐
- C++实现顺序表和单链表
- c++实现单链表,双向链表,顺序表的接口(非模板)
- C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现
- 顺序栈——C++实现
- 【c++】模拟实现顺序队列方法一
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- 【数据结构】用C++实现顺序表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- 【C++】实现顺序表
- C++模板实现顺序队列
- C++实现顺序表的方法
- C++实现的顺序表
- C++数据结构之栈——顺序栈的实现
- 顺序栈的c++实现
- c++实现两个元素进栈和出栈的顺序
- 算式计算器C++实现代码(顺序栈结构 增加了一些功能 比如三角函数 求指教)
- c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)
- 循环顺序队列介绍及其C++实现
- 顺序线性表的c++实现
- 堆栈顺序存储的c++实现与测试
- C++实现顺序表及双向链表