#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; typedef int DataType; class SeqList { public: SeqList() :_arr(NULL), _size(0), _capacity(0) {} SeqList(const SeqList& s) :_capacity(s._capacity), _size(s._size) { _arr=(new DataType[s._size]); memcpy(_arr, s._arr, sizeof(DataType)* s._size); } void CheckCapcity(); void PushBack(DataType x); void PushFront(DataType x); ~SeqList(); void PopBank(); void PopFront(); void Disp(); void Insert(size_t pos, DataType x); int Find(DataType x); SeqList & operator=(SeqList& s); private: DataType* _arr; size_t _size; size_t _capacity; }; SeqList& SeqList::operator=(SeqList& s) { if (this != &s) { int *tmp; tmp = new DataType[s._size]; memcpy(tmp, s._arr, sizeof(DataType)*s._size); delete _arr; _arr = tmp ; _size = s._size; _capacity = s._capacity; } return *this; } void SeqList::CheckCapcity() { if (_size >= _capacity) { _capacity = 2 * _capacity + 3; _arr = (DataType*)realloc(_arr, sizeof(DataType)*_capacity); } } void SeqList::PushBack(DataType x) { CheckCapcity(); if (_size == 0) { _size = 1; _arr[0] = x; } else { _arr[_size++] = x; } } void SeqList:: Disp() { int i = 0; for (i = 0; i < _size; i++) { cout << _arr[i]<<endl; } } SeqList::~SeqList() { if (_arr) { delete _arr; _arr = NULL; } } void SeqList::PopBank() { if (0==_size) { return; } else { --_size; } } void SeqList::PushFront(DataType x) { CheckCapcity(); for (int i = _size-1; i >= 0; i--) { _arr[i + 1] = _arr[i]; } _arr[0] = x; ++_size; } void SeqList::PopFront() { if (0 == _size) { return; } else { for (int i = 0; i < _size-1; i++) { _arr[i] = _arr[i + 1]; } --_size; } } void SeqList::Insert(size_t pos, DataType x) { CheckCapcity(); for (int i = _size; i > pos-1; i--) { _arr[i] = _arr[i-1]; } _arr[pos-1] = x; _size++; } int SeqList::Find(DataType x) { int i = 0; for (i = 0; i < _size;i++) { if (_arr[i] == x) { return i; } } return NULL; } void test1() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.Disp(); } void test2() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.PopBank(); s1.PopBank(); s1.PopBank(); s1.PopBank(); //s1.PopBank(); s1.Disp(); } void test3() { SeqList s1; //s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.PushFront(0); s1.Disp(); } void test4() { SeqList s1; s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.PopFront(); s1.Disp(); } void test5() { SeqList s1; //s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.Insert(1, 7); s1.Disp(); } void test6() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.Disp(); SeqList s2; s2 = s1; s2.Disp(); } int main() { //test1(); //test2(); //test3(); //test4(); //test5(); test6(); system("pause"); return 0; }
原文:http://10725723.blog.51cto.com/10715723/1752292