C++实现顺序表简单功能
2017-07-28 11:57
323 查看
实现代码:
测试代码:
typedef int DataType; class SeqList { private: DataType* _a; size_t _size; size_t _capacity; void CheckCapcacity() { if (_size == _capacity) { size_t NewCapacity = _capacity ? _capacity * 2 : 3; _a = (DataType*)realloc(_a, NewCapacity*sizeof(DataType)); assert(_a); _capacity = NewCapacity; } } public: SeqList() :_a(NULL) , _size(0) , _capacity(0) {} SeqList(const SeqList& s) { _a = (DataType*)malloc(s._size*sizeof(DataType)); memcpy(_a, s._a, sizeof(DataType)*s._size); _size = s._size; _capacity = s._capacity; } /*SeqList& operator=(const SeqList& s) { if (this != &s) { free(_a); _a = (DataType*)malloc(s._size*sizeof(DataType)); memcpy(_a, s._a, sizeof(DataType)*s._size); _size = s._size; _capacity = s._capacity; } return *this; }*/ SeqList& operator=(SeqList s)//若传引用会改变引用对象的值 { swap(_a, s._a); swap(_size, s._size); swap(_capacity, s._capacity); return *this; } ~SeqList() { if (_a) { free (_a); _a = NULL; } } void PushBack(DataType x) { CheckCapcacity(); _a[_size++] = x; } void PopBack() { if (_size > 0) { _size--; } else { cout << "顺序表为空" << endl; } } void PushFront(DataType x) { /*CheckCapcacity(); DataType end = (DataType)_size; for (; end >= 0;--end) { _a[end + 1] = _a[end]; } _a[0] = x; _size++;*/ Insert(0, x); } void PopFront() { Erase(0); /*if (_size > 0) { DataType i = 0; for (; i < (int)_size;i++) { _a[i] = _a[i+1]; } _size--; } else { cout << "顺序表为空" << endl; }*/ } void Insert(size_t pos, DataType x) { CheckCapcacity(); if (pos<0 || pos>_size) { return; } DataType end = (DataType)_size-1; for (; end >=(DataType)pos; end--) { _a[end+1] = _a[end]; } _a[pos] = x; _size++; } void Erase(size_t pos) { if (_size > 0) { if (pos<0 || pos>_size) { return; } else { DataType i = (DataType)pos; for (; i < (DataType)_size; i++) { _a[i] = _a[i + 1]; } _size--; } } else { cout << "顺序表为空" << endl; } } DataType& operator[](size_t pos) { assert(pos < _size); return _a[pos]; } void Print() { if (_size) { DataType i = 0; for (i = 0; i < (int)_size; i++) { cout << _a[i] << " "; } cout << endl; } else { cout << "顺序表为空" << endl; } } };
测试代码:
#include"Seqlist.h" void Test() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.Print(); //s1.Insert(2, 6); //s1.Print(); /*s1.PushFront(1); s1.PushFront(2); s1.PushFront(3); s1.PushFront(4); s1.Print();*/ /*s1.Erase(1); s1.Print();*/ s1.PopFront(); s1.Print(); /*s1.PopBack(); s1.PopBack(); s1.PopBack(); s1.PopBack(); s1.Print(); */ /*SeqList s2(s1); s2.Print(); SeqList s3; s3 = s1; s3.Print();*/ } int main() { Test(); system("pause"); return 0; }
相关文章推荐
- C语言简单宏函数实现C++模板功能(类型本身作为函数参数)
- c++ 顺序表 简单实现
- 用C++实现简单的顺序表
- cocos2dx3.5 studio c++简单功能实现
- C++ HLSL实现简单的图像处理功能
- C++实现的多重继承功能简单示例
- c++中map容器简单功能实现测试附带结构体指针测试
- 简单的一个C++中traits功能的实现例子
- C++单项链表的构造及简单功能的实现
- C++简单实现顺序表和单链表
- c++实现简单的日志功能
- C++自定义String类(简单的实现功能)
- C++模板实现简单的链表和顺序表
- 利用C++简单实现顺序表和单链表的示例代码
- c++ 定时器 (简单功能实现)
- 用C++实现中缀表达式求值即简单科学计算器的功能
- 简单的顺序表,及其5大功能的实现!!!
- 小字典之MFC简单的多线程调用类的成员函数实现逐步画线功能 VS2015 C++ 完成
- C++链式栈的简单实现(只有基本功能)
- c++实现栈简单功能小程