顺序表(C++实现)
来源:互联网 发布:懒人做饭知乎 编辑:程序博客网 时间:2024/06/13 22:18
顺序表是基本的数据结构,创建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() //尾删 { if(_size) { _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() //头删 { if(_size) { 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位置的数据 { assert(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; //容量};
本文出自 “无心的执着” 博客,谢绝转载!
0 0
- 顺序表(C实现)
- 【C++】实现顺序表
- 【c++】实现顺序表
- 顺序表实现(SeqList C++)
- 数据结构(C实现)------- 顺序表
- 顺序表的实现(C语言)
- 线性表顺序实现(C语言)
- 【数据结构】实现顺序表(c++)
- 【数据结构】实现顺序表(c语言)
- 顺序表(C 语言实现)
- 顺序表的实现(C语言版)
- 静态顺序表(C语言实现)
- 静态顺序表(C语言实现)
- 动态顺序表(C语言实现)
- 顺序表的实现(C语言)
- (C)顺序表实现集合运算
- 顺序表基本操作(c实现)
- 顺序表的实现(C++)
- 面试题—链表操作
- C语言编写—通讯录(小项目)
- 浅谈为什么Java接口中不允许定义变量------转帖
- android混淆后webview显示问题
- 面试题—链表操作2
- 顺序表(C++实现)
- string类(c++)
- POJ2251-Dungeon Master
- 单链表(c++实现)
- 双向链表(c++实现)
- 单继承、多继承--问题解析
- 注释转换——(小项目)
- 模板(顺序表与栈)
- 模板(双向链表与队列)