数据结构之线性表
来源:互联网 发布:wps mail for linux 编辑:程序博客网 时间:2024/06/05 10:21
基本概念
线性表(List):由零个或多个数据元素组成的有限序列。特征:
1.线性表是一个序列。
2.0个元素构成的线性表是空表。
3.线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。
4.线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就是说,线性表的长度是有限的。
线性表抽象数据类型
基于线性表的特征,线性表可以做如下操作:
- InitList(*L);//初始化操作,建立一个空的线性表
- ListEmpty(L);//若线性表为空,返回true,否则返回false
- ClearList(*L);//清空线性表
- GetElem(L,i,*e);//查找线性表中的第i个位置的元素值,并赋值给e
- LocateElem(L,e);//查找线性表L中与给定值e相等的元素,如果查找成功,则返回第一个相同的元素在L //中的下标;否则,返回0表示失败
- ListInsert(*L,i,e);//在线性表L的第i个位置插入元素e
- ListDelete(*L,i,*e);//删除线性表L中第i个位置元素,并用e返回其值
- ListLength();//返回线性表L的长度
线性表和线性表可以进行叠加操作,线性表La和线性表Lb的并集操作,结果保存在La中的伪代码如下:
线性表的存储结构
根据其字面意思,线性表是顺序存储的,用一段地址连续的存储单元依次存储线性表的数据元素。如:
关于线性表地址长度的计算
由于顺序存储结构是按照顺序存储的,所以每个数据元素的地址都可以根据第一个元素的地址推算出来。其计算公司LOC(ai) = LOC(a1)+ (i-1)*c
线性表的基本操作
线性表基本操作包含基本的CRUD操作。
插入操作
插入操作算法的思路是:
1.如果插入位置不合理,抛出异常。
2.如果线性表长度大于等于数组长度,则抛出异常或者增加数组长度。
1.如果插入位置不合理,抛出异常。
2.如果线性表长度大于等于数组长度,则抛出异常或者增加数组长度。
例如:在线性表L的第i个位置插入元素e
删除操作
删除操作的思路是:1.如果删除位置不合理,抛出异常
2.取出删除元素
3.从删除位置开始遍历到最后一个元素,分别将她们都向前移动一个位置
4.表长减1
例如:我们要删除一个线性表的某一个元素
查询操作
查询操作是比较简单的,例如:我们要在线性表中查询某个元素的位置。
线性表的缺点
顺序表需要预分配一定长度的存储空间,不能动态增长,插入或删除比较麻烦。基于线性表的缺点,有了链式存储线性表。链式存储的特点:
线性表查询
算法思路是:1.声明一个节点p指向链表第一个节点,初始化j从1开始
2.当j< i时,就遍历链表,让P的指针向后移动,不断指向下一个节点,j累加1
3.若到链表末尾p为空,则说明第i个元素不存在
4.否则查找成功,返回节点p的数据
阅读全文
0 0
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- swap
- Shell入门
- Swagger Editor本地开发环境搭建
- 研究学习Kotlin的一些方法
- 我与python约个会:19. 再说函数~那些不得不知道的事儿
- 数据结构之线性表
- 关于CoordinatorLayout展开与折叠相关属性
- 仿微信底部tab导航
- CSS3
- Excel中CONCATENATE函数生成SQL insert 语句
- ListView item点击失效
- html的双下划线的解决办法
- Android NDK开发 。Java层与Jni层的数组传递(二)
- scraping_编写第一个网络爬虫_最终版本