【C++】顺序表的实现

来源:互联网 发布:js去除数组的重复元素 编辑:程序博客网 时间:2024/05/17 01:04
#include<iostream>#include<assert.h>using namespace std;//typedef struct FindRet//{//bool isFind;// 是否找到的标示//size_t index;// 找到数据的下标//}Findret;typedef int DataType;class SeqList{public:SeqList(){ _array = new int[10]; _size = 0; _capicity = 10;}SeqList(const SeqList& sList){_array = new int [sList._capicity] ;_size = sList._size ;_capicity = sList._capicity ;}SeqList& operator=(const SeqList& sList){if(this != &sList){delete []_array;_array = new int [sList._capicity];_size = sList._size ;    _capicity = sList._capicity ;        }return *this;}~SeqList(){delete []_array;}void PushBack(const DataType& x) //尾插{ _CheakCapicity();_array [_size] = x;    _size ++;    }    void PushFront(const DataType& x)//头插{_CheakCapicity();int i=_size;    for(i=_size; i > 0; i--){_array[i] = _array[i-1];}    _array[0] = x;    _size++;}void PopFront()//头删{if(_size == 0){cout<<"顺序表为空"<<endl;}else{int count = 1;for(count = 1; count<_size; count++){_array[count-1] = _array[count];}_array[_size - 1] = 0;_size--;}}void PopBack(){if(_size == 0){cout<<"顺序表为空"<<endl;}else{_array[_size - 1] = 0;_size--;}}void Print(){int count = _size;for(_size= 0; _size < count ; _size++){cout<<_array[_size]<<" ";}cout<<endl;}// 实现上面的函数void Insert(size_t index, const DataType& x){    _CheakCapicity();int i = _size;for(i = _size; i >= index; i--){_array[i]= _array[i-1];}_array[index-1]=x;_size++;}void Modified (size_t index, const DataType& x){if(index < 0 && index >_size -1){cout<<"不合法的位置"<<endl;}else{_array[index - 1] = x;}}void Remove(size_t index){if(index < 0 && index >_size -1){cout<<"不合法的位置"<<endl;}else{int count = index;for(count = index; count <=_size - 1; count++){_array[count-1]=_array[count];            }_array[_size-1] = 0;_size--;}}bool Find(const DataType& x, size_t findIndex){if(findIndex <0||findIndex >_size-1){return false;}if(_array[findIndex]==x){return true;}return false;}private:bool _CheakCapicity(){if(_size == _capicity){ DataType* tmp = new DataType [_capicity * 2]; memcpy(tmp,_array,sizeof(_size * 4)); delete []_array; _array = tmp; return true;}}private:DataType* _array;size_t _size;size_t _capicity;};int main(){SeqList s1;s1.PushBack(1);s1.PushBack(2);s1.PushBack(3);s1.PushBack(4);s1.PushBack(5);s1.PushFront(6);s1.PushFront(7);s1.PushFront(8);s1.Insert(3,2);s1.Modified(3,7);    s1.Remove(3);    s1.PopFront();s1.PopBack();    s1.Print ();getchar();return 0;}

0 0