Cpp_顺序表
来源:互联网 发布:python 调用批处理 编辑:程序博客网 时间:2024/06/07 03:42
代码如下:
【Seqlist.h】
#pragma once#include <iostream>#include <assert.h>using namespace std;typedef int DataType;class Seqlist{public: Seqlist() :_array(NULL) , _size(0) , _capacity(0) {} Seqlist(const Seqlist& s) //构造函数 { _array = (DataType*)malloc(sizeof(DataType)*s._size); memcpy(_array, s._array, sizeof(DataType)*s._size); _size = _capacity = s._size; } Seqlist& operator=(const Seqlist& s) //运算符重载 { if (this != &s) { free(_array); _array = (DataType*)malloc(sizeof(DataType)*s._size); memcpy(_array, s._array, sizeof(DataType)*s._size); } return *this; } ~Seqlist() //析构函数 { if (_array) { free(_array); _size = _capacity; _array = NULL; } } void PushBack(DataType x) //后插 { CheckCapacity(); _array[_size++] = x; } void PopBack() //后删 { assert(_size > 0); --_size; } void PushFront(DataType x) //前插 { CheckCapacity(); int end = _size - 1; while (end >= 0) { _array[end + 1] = _array[end]; --end; } _array[0] = x; ++_size; } void PopFront() //前删 { assert(_size > 0); for (size_t i = 1; i < _size; ++i) { _array[i - 1] = _array[i]; } --_size; } inline void Insert(size_t pos, DataType x) //指定位置插入 { assert(pos <= _size); CheckCapacity(); for (int end = _size - 1; end >= (int)pos; --end) { _array[end + 1] = _array[end]; } _array[pos] = x; ++_size; } inline void Erase(size_t pos) //指定位置删除 { assert(pos <= _size); for (size_t i = pos + 1; i < _size; ++i) { _array[i - 1] = _array[i]; } --_size; } inline DataType& operator[](size_t pos) { assert(pos < _size); return _array[pos]; } void CheckCapacity() { if (_size == _capacity) { _capacity = _capacity * 2 + 3; _array = (DataType*)realloc(_array, _capacity*sizeof(DataType)); } } void Print() //打印 { for (size_t i = 0; i < _size; ++i) { cout << _array[i] << " "; } cout << endl; }private: DataType* _array; size_t _size; size_t _capacity;};void TestSeqlist(){ Seqlist s; s.PushBack(1); s.PushBack(2); s.Print(); s.PopBack(); s.Print(); s.PushFront(0); s.Print(); s.PopFront(); s.Print(); s.Insert(0, 30); s.Print();}
【test.cpp】
#include "Seqlist.h"int main(){ TestSeqlist(); return 0;}
阅读全文
1 0
- Cpp_顺序表
- Cpp_引用
- Cpp_继承
- Cpp_多态
- Cpp_链表
- Cpp_函数重载
- Cpp_函数缺省参数
- Cpp_内联函数
- Cpp_动态内存分配
- Cpp_类型转换
- Cpp_类和对象
- Cpp_构造函数
- Cpp_析构函数
- Cpp_静态成员
- Cpp_成员指针
- Cpp_操作符重载
- Cpp_异常处理
- Cpp_继承&对象模型
- onclick,onchange,onblue等触发性事件的区别
- Android之SurfaceView使用总结
- 快慢指针的概念及其应用
- 学习打印
- HBase源码分析之WALEdit
- Cpp_顺序表
- 四轴PID讲解
- MPAndroidChart对Y轴上的刻度宽度的设置以及其他说明
- 邻接表的vector表示方法
- DOM(一)一些属性方法介绍以及兼容性问题
- Island of Survival LightOJ
- < application >标签
- Android_Version
- redis小本本之sentinel(五)