线性表——1. 顺序表(向量)

来源:互联网 发布:域普软件怎样 编辑:程序博客网 时间:2024/06/06 07:08

1. 顺序表

顺序表就是以数组存储数据,在加上一些管理数据的方法。

template <typename T>class CVector{private:    T* elements;    size_t mi_size;                                    //data size    size_t mi_capacity;                                //vector capacity}


2. 操作

2.1 访问

访问:A[i]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(1)


2.2 插入


insert(i, item). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)

for (j=n-1; j>=i; j--) A[j+1] = A[j];A[i] = item;


template <typename T>inline int CVector<T>::Insert( const size_t i_index, const T data ){if( i_index<0 || i_index>mi_capacity ){cerr<<"ERROR! <Insert()> Index out of range.\n";return XR_InvaildParam;}if( mi_size == mi_capacity )Resize(mi_capacity<<1);size_t i = mi_size;while (i > i_index){elements[i] = elements[i-1];i--;}elements[i_index] = data;mi_size++;return XR_OK;}


2.3 删除


remove(i). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)

for (; i<n; i++) A[i] = A[i+1];


template <typename T>inline int CVector<T>::Delete(const size_t i_index){if( i_index<0 || i_index>=mi_size ){cerr<<"ERROR! <Delete()> Index out of range.\n";return XR_InvaildParam;}for (size_t i = i_index; i<mi_size-1; i++){elements[i] = elements[i+1];}mi_size--;return XR_OK;}


3. 应用

归并2个数组中的元素

4. 实现代码

本人仿造C++ STL vector 写了一个顺序表的存储容器

C++ STL vector解析


原创粉丝点击