数据结构(C语言)线性表的定义和基本操作
作者:互联网
线性表的定义和基本操作
定义
线性表:是具有相同特征的数据元素的一个有限序列,同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系
逻辑特征
- 由n(n>=0)个数据元素(结点)a1,a2,……an组成的有限序列。
- 期中数据元素的个数n定义为表的长度
- 当 n =0时称为空表
- 将非空的线性表(n > 0) 记作:(a1,a2,a3)
- 这里的数据元素ai(1<=i<=n)只是一个抽象符号,其具体含义在不同情况下可以不同
例如:
26个英文字母组成的英文表(A,B,C,D, …,Z)
数据元素都是字母;
元素间关系时线性
线性表中数据元素的类型可以为简单类型,也可以为复杂类型
许多实际问题所涉及的基本操作有很大相似性,不应为每个具体应用单独写一个程序
从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作
线性表的实现 (伪代码)
基本操作(一)(插入,删除,清空)
- lnitList(&L) (lnitialization List)
操作结果:构造一个空的线性表L。 ·- DestroyList(&L)
初始条件:线性表L已经存在。
操作结果:销毁线性表- ClearList(&L)
初始条件:线性表L已经存在。
操作结果:将线性表L重置为空表。
基本操作(二)(存在,长度)
- ListEmpty(L)
初始条件:线性表L已经存在。
操作结果:若线性表L为空表,则返回TURE;否则返回FALSI- ListLength(L)
初始条件:线性表L已经存在。
·操作结果:返回线性表L中的数据元素个数。
基本操作(三)(查找返回,定位)
- GetElem(Li,&e)
初始条件:线性表L已经存在,1<=i<=- ListLength(L)。
操作结果:用e返回线性表L中第i个数据元素的值.- LocateElem(L,e,compare())
·初始条件:线性表L已经存在,compare()是数据元素判定函数。
操作结果:返回L中第1个与e满足compare()的数据元素的位序。若这样的数据元素不存在则返回值为0。
基本操作(四)(查找前驱和后继)
- PriorElem(L, cur_e , &pre_e)
初始条件:线性表L已经存在。
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败 ; pre_e无意义。- NextElem(L,cur_e,&next_e)
初始条件:线性表L已经存在。
操作结果:若cur_e是L的数据元素,且不是第最后个,则用next_e返回它的后继,否则操作失败 ,next_e无意义
基本操作(五)(插入)
- Listlnsert(&L, i, e)
初始条件:线性表L已经存在,1<=j、i<=ListLength(L)+1。
操作结果:在L的第i个位置之前插入新的数据元素e, L的长度加一。 插入元素e之前(长度为n) : (a1,a2.aj-1,ap…an) 插入元素e之后(长度为n+1) : (a1,a2… aj-1.e,as …an)
基本操作(六)(删除,调用)
- ListDelete(&L,i,&e)
初始条件:线性表L已经存在,1<=i<= ListLength(L)。
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减一。 删除前(长度为n ) : ( a1,a2,…aj-1, aj,a+1. -…,a,)·删除后(长度为n -1 ) : (a1,a2… aj-1,ai+1. …,an)- ListTraverse(&L,visited))
初始条件:线性表L已经存在
操作结果:依次对线性表中每个元素调用visited()
标签:线性表,元素,初始条件,C语言,基本操作,操作,数据 来源: https://blog.csdn.net/weixin_52028026/article/details/122597154