C++SeqList

来源:互联网 发布:网络舆情网 编辑:程序博客网 时间:2024/06/14 15:58

C++实现顺序表的若干功能

1.CheckCapacity 容量函数

2.PushBack/PushFront 插入数据和头插函数

3.PopBack/PopFront 删除数据和头删函数

4.Insert函数在指定的节点插入数据,Erase函数删除指定节点的数据

5.Print打印函数

6.测试函数

程序代码:

#pragma oncetypedef int DataType;class SeqList{public:SeqList(): _a(NULL), _size(0), _capacity(0){}SeqList(const SeqList& s){if (_a){_a = (DataType*)malloc(sizeof(DataType)*s._size);memcpy(_a, s._a, sizeof(DataType)*s._size);}else{_a = NULL;}_size = s._size;_capacity = s._size;}void CheckCapacity(){if (_size == _capacity){_capacity = _capacity * 2 + 3;_a = (DataType*)realloc(_a, _capacity*sizeof(DataType));}}void PushBack(DataType x){CheckCapacity();_a[_size] = x;_size++;}void PushFront(DataType x){CheckCapacity();int i = _size;for (; i > 0; i--){_a[i] = _a[i - 1];}_a[0] = x;_size++;}void PopBack(){if (_size == 0){cout << "顺序表为空:" << endl;return;}_size--;}void PopFront(){if (_size == 0){cout << "顺序表为空:\n" << endl;return;}else{for (size_t i = 0; i < _size - 1; i++){_a[i] = _a[i + 1];}_size--;}}void Insert(size_t pos, DataType x){assert(pos<_size);for (size_t i = _size; i > pos; i--){_a[i] = _a[i - 1];}_a[pos] = x;_size++;}void Erase(size_t pos){assert(pos <_size);for (size_t i=pos-1; i < _size - 1; i++){_a[i] = _a[i + 1];}_size--;}void Print(){if (_size == 0){cout << "顺序表为空请添加元素:\n" << endl;return;}for (size_t i = 0; i < _size; i++){cout << _a[i] << " ";}cout << endl;}private:DataType* _a;size_t _size;size_t _capacity;};void TestSeqList(){SeqList mylist;mylist.PushBack(1);mylist.PushBack(4);mylist.PushBack(5);mylist.Insert(1,33);mylist.Erase(2);/*mylist.PushFront(2);*//*mylist.PopBack(1);mylist.PopFront(2);*/mylist.Print();}

测试函数代码:

程序运行结果:


0 0
原创粉丝点击