其他分享
首页 > 其他分享> > 数据结构(C语言)线性表的定义和基本操作

数据结构(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