线性表之顺序表
来源:互联网 发布:执行sql不打印日志 编辑:程序博客网 时间:2024/05/14 07:27
基本思想:用数组来存储数据,其实也就是把数组包装一下,变成可以增删改查的数据结构。
优点:检索数据快,时间复杂度为0(1)。
缺点:插入数据慢,最好的情况是直接插入末尾,时间复杂度为0(1),最坏的情况为插入头部,时间复杂度为0(n)。所以插入数据的平均复杂度为0(n/2)。
C代码实现下载
C++代码实现下载
java代码实现下载
(备用下载地址)
功能实现:
假设:
const int MAX = 100; //表的最大元素个数
int count = 0; //记录当前表中元素个数
1.bool IsFull(); 判断表是否已满
因为是静态的,所以才会有这个函数。只要count == MAX即表满了。
2.bool IsEmpty(); 判断表是否为空
只要count == 0 ,则表为空
3.int GetElementCount(); 获取元素个数
直接返回count(这个在C++、java中用才有意义,封装性)
4.void AddFromHead(T e); 添加数据(头添加)
先把所有元素往后移一个位置,空出第一个位置,然后将要添加的元素,赋值给e[0]即可。
5.void AddFromTail(T e); 添加数据(尾添加)
直接添加到数组的后面,即e[count] = 要添加的元素
6.void Insert(int local,T e); 插入数据(指定位置)
在local这个地方的后面的元素都往后移(包括local),然后把要插入的数据赋值给e[local]。
7.int GetLocal(T e); 返回元素位置
一个for循环,从第一个元素开始比较,相等则返回下标,如果找不到返回-1
8.void DeleteFromLocal(int local); 删除数据 (指定位置)
后面的元素往前覆盖,直到覆盖local那个位置,即删除成功
9.void DeleteFromElement(T e); 删除数据 (指定元素)
调用GetLocal后得到元素的位置,再调用DeleteFromLocal即可
10.int SearchFromElmemt(T e); 根据指定元素查找,返回位置
和GetLocal函数一样。
11.T SearchFromLocal(int local); 根据位置查找指定元素
先调用GetLocal得到位置后,直接进行数组的索引返回即可。
12.void Reverse(); 逆转表
一个for循环,进行头尾互换,只需遍历到count/2即可,就可以实现逆转了
13void Print(); 遍历元素
就是循环输出所有元素
14.void CopyList(SequenceList& sl); 复制表
利用AddFromTail函数,把元素添加到sl中,值得注意的是,如果用AddFromHead,就会把元素倒置了
15.void Rewrite(int local, T e); //修改元素
也是直接数组索引修改,只要注意判断越界问题就好。
需要注意的问题:
当要操作的元素是结构体的时候,搜索、删除、遍历、逆转等都要重新写,这个没有模板,只能是用到什么就写什么。比如搜索,你要根据结构体中的哪个字段进行搜索,删除也一样。遍历的时候,也要对字段进行一一遍历。
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 《线性表之顺序表》
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- 线性表之顺序表
- paint-Shader详解:自定义圆角圆形控件
- java测试注解(@RunWith(value = SpringJUnit4ClassRunner.class) )
- system.new.dat解压工具sdat2img
- ajax请求错误码0的问题
- Arcgis Javascript那些事儿(十)--发布网络分析服务
- 线性表之顺序表
- Hibernate配置分析说明
- (10)Java学习笔记——面向对象04——继承
- 数据挖掘面试
- c 文件
- docker容器网络通信原理分析
- CrxMouse手势
- i++和++i的区别
- 【BZOJ 2260&&4349】最小树形图&&商店购物 朱刘算法