顺序表(C++实现)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表(C++实现)相关的知识,希望对你有一定的参考价值。
顺序表是基本的数据结构,创建Seqlist类,主要包括类的默认成员函数(构造函数、析构函数、赋值运算符重载),顺序表的基本功能实现。
//顺序表 typedef int DataType; class Seqlist { public: Seqlist() //无参构造函数 :_array(NULL) ,_size(0) ,_capacity(0) { } ~Seqlist() //析构函数 { if (_array) { delete[] _array; } } //深拷贝 Seqlist(const Seqlist & s) //拷贝构造函数 :_array(new DataType[s._size]) , _size(s._size) , _capacity(s._size) { memcpy(_array, s._array, sizeof(DataType)*(_size)); //内存拷贝 } Seqlist & operator=(const Seqlist & s) //赋值运算符重载 { if (this != &s) //考虑自己给自己赋值的情况 { DataType * tmp = new DataType[s._size]; delete[] _array; _array = tmp; _size = s._size; _capacity = s._size; memcpy(_array, s._array, sizeof(DataType)*(_size)); } return *this; } public: void PushBack(DataType x) //尾插 { check_capacity(); _array[_size++] = x; } void PopBack() //尾删 { _array[_size] = NULL; _size--; } void PushFront(DataType x) //头插 { check_capacity(); for (int i = 0; i < _size; i++) { _array[_size - i] = _array[_size - 1 - i]; } _array[0] = x; _size++; } void PopFront() //头删 { for (int i = 0; i < _size; i++) { _array[i] = _array[i + 1]; } _size--; } void Insert(size_t pos, DataType x) //任何位置插入 { check_capacity(); if ((pos < 1) || (pos > _size)) { return; } else { for (int i = 0; i < pos; i++) { _array[_size + 1 - i] = _array[_size - i]; } _array[pos + 1] = x; } _size++; } void Erase(size_t pos) //删除pos位置的数据 { for (int i = pos; i < _size; i++) { _array[i-1] = _array[i]; } _size--; } int Find(DataType x) //查找 { int i = 0; while ((i < _size) && (x != _array[i])) { i++; } if (i < _size) { return i + 1; } else { return 0; } } void PrintSeqlist() //格式化输出 { for (int i = 0; i < _size; i++) { cout << _array[i] << " "; } cout << endl; } private: void check_capacity() { if (_size >= _capacity) { _capacity = _capacity + 2; //2是为了防止开始容量为0,便于增容,也可以开始开辟一部分空间 _array = (DataType *)realloc(_array, _capacity*(sizeof(DataType))); } } private: DataType * _array; //数组 size_t _size; //有限个数 size_t _capacity; //容量 };
本文出自 “无心的执着” 博客,谢绝转载!
以上是关于顺序表(C++实现)的主要内容,如果未能解决你的问题,请参考以下文章
c++中的顺序表写法,主要实现(增删查改,构造函数,运算符重载)