数据结构-C++实现(一):数组链表
来源:互联网 发布:get music软件 编辑:程序博客网 时间:2024/05/21 21:01
数据结构C++实现第一发,主要有几部分构成,分别是一个抽象类LinearList.h、数组链表的头文件ArrayList.h以及main.cpp源文件。
LinearList.h文件具体信息如下:
ArrayList.h文件如下:简单的测试如下:#include <iostream>#include "ArrayList.h"template <typename T>void resizeLength2D(T**& a,int oldRow,int oldCol,int newRow,int newCol){ T** tmp = new T*[newRow]; int r = min(oldRow,newRow); int c = min(oldCol,newCol); for(int i = 0;i<newRow;i++) tmp[i] = new T[newCol]; for(int i = 0;i<r;i++) { copy(a[i],a[i]+c,tmp[i]); } for(int i = 0;i<oldRow;i++) delete [] a[i]; delete [] a; a = tmp;}int main(){ ArrayList<int> ia(5); ia.insert(0,1);ia.insert(0,2);ia.insert(0,3);ia.set(3,0); std::cout << ia << std::endl; for(auto i = ia.begin();i!=ia.end();++i) std::cout << *i << " "; ArrayList<int> ib(ia); cout << (ia!=ib) << endl; /* //test resizelength2d int** a; a = new int* [3]; for(int i =0;i<3;i++) a[i] = new int[3]; resizeLength2D(a,3,3,4,4); */ return 0;}
这里我对ArrayList类里的函数做一些说明;element代表存储元素,arrayCapacity表示容量大小,listsize表示数组实际大小,capacity是要比listsize大的,相当于留有一些裕量,这一点和stl的vector类似。addsize表示listsize达到一定大小后,单次对capacity扩容的大小。checkIndex()函数后续用于检测索引值是否有效。
然后是public部分,内嵌类iterator为数组链表定义了迭代器,begin()以及end()的设置与stl的容器相同。
构造函数ArrayList()中有两个参数,一个代表预先给capacity的大小,另一个设置的是单次扩容值,如果缺省,则默认每次扩容时将capacity翻倍。析构函数,清空element元素。
接下来时覆写抽象类成员函数的部分,empty()函数返回当前数组是否为空,为空返回true;size()函数返回当前的数组大小,这里的大小时listsize,不是容量。get()函数返回指定索引处的值;indexof()返回目标值的第一个索引,若目标不在数组中,返回-1;erase()擦除指定index的数据,相应更改数组大小与容量;insert()在指定索引处插入值;output()函数将数组元素依次输出;
接下来是非构造拷贝析构函数、同时也不是覆写的成员函数。capacity()函数返回容量值,set()设定指定索引处的值;trimToSize()函数将容量设置为与listsize大小一i样;setSize()函数使得数组大小等于指定大小。
最后是几个运算符的重载,应该能看懂。另外,还有一个输出流的运算符的重载,定义在类外。
- 数据结构-C++实现(一):数组链表
- c语言实现通用数据结构(一):通用链表
- c语言实现通用数据结构(一):通用链表
- 数据结构(一) -- 循环队列数组实现
- 数据结构一(栈-数组实现)
- EKAlgorithms-常用数据结构Objective-C语言实现一数组排序
- C 数据结构使用数组和链表实现栈
- 数据结构之数组(C语言实现)
- 《数据结构与算法分析》—栈的链表和数组实现(C语言)
- 数据结构C语言实现数组
- 数据结构--链表的实现(一)
- 栈实现(数据结构---数组,链表 C实现)
- 数据结构与C语言实现(一)——链表及两个实例
- 数据结构(C实现)------- 双向链表
- 【数据结构】实现循环链表(c++)
- 基础数据结构之数组与链表(一)
- 在严蔚敏《数据结构(C语言版)》中,不能用动态分配的一维数组来实现循环队列
- 1.数据结构(C语言)---自定义数组的简单实现
- ubuntu14.04.1上安装mongodb3.4
- 缓和曲线04四次两段曲线
- 该做什么?该怎么做?如何为自己的人生负责
- 高性能Mysql主从架构的复制原理及配置详解
- python中用Beautifulsoup提取集搜客网站的信息
- 数据结构-C++实现(一):数组链表
- jenkins迁移job插件 job-import插件
- ECMAScript6(ES6)标准之数组Array扩展方法
- 如何在Ubuntu系统下安装使用LaTeX
- 缓和曲线05五次抛物线
- springMVC源码分析--AbstractHandlerMapping(二)
- 三个怪兽和三个和尚过河java版
- 网页设计
- mysql主从复制配置