线性表

线性表是一种数据元素有序集合的线性结构,包括顺序表的定义、抽象数据类型以及顺序存储的实现和操作。介绍了线性表的数学模型、顺序表示法以及在C++中的类型描述,还讨论了初始化、销毁、查找、插入和删除等基本运算的时间复杂度。
摘要由CSDN通过智能技术生成

线性表

什么是线性表

线性表是一种最简单的线性结构。

什么是线性结构?简单地说,线性结构是一个数据元素的有序(次序)集合。它有四个基本特征:
在数据元素的非空有限集中,

  • ①存在惟一的一个被称做”第一个”的数据元素;
  • ②存在惟一的一个被称做”最后一个”的数据元素;
  • ③除第一个之外,集合中的每个数据元素均只有一个前驱;
  • ④除最后一个之外,集合中的每个数据元素均只有一个后继。

这里的”有序”仅指在数据元素之间存在一个”领先”或”落后”的次序关系,而非指数据元素”值”的大小可比性。比较典型的线性结构:线性表、栈、队列、串等。

2.1 线性表的类型定义

2.1.1 线性表的定义

线性表(linear_list)是n个数据元素的有限序列,记作(a1, a2, …, ai, …, an)。
线性表的数学模型(形式定义):
含有n个数据元素的线性表是一个数据结构

         LinearList=(A, R)

其中:

         A={ai| ai∈ElemType , 1≤i≤n, n≥0}
         R={r}
         r={<ai, ai+1> | 1≤i≤n -1}

说明:

①线性表的数据元素可以是各种类型(整、实、记录类型等)

      typedef int ElemType;
      typedef char ElemType;
      等;

②同一线性表中的数据元素必须具有相同的特性,属同一类型;

③关系r是一个有序偶对的集合,即对于非空的线性表(a1, a2, …, ai-1, ai, ai+1, …, an), ai-1 领先于ai,表示了数据元素之间的相邻关系,称ai-1是ai的直接前驱,ai是ai-1的直接后继;

④序列中数据元素的个数 n 定义为线性表的表长,n=0 时的线性表被称为空表;

⑤称i为数据元素在线性表中的位序。

2.1.2 线性表的抽象数据类型

ADT List {
    Data:
        一个线性表L定义为L=(a1,a2,…,an),当L=( )时定义为一个空表。
    Operation:
        InitList(& L)   //初始化线性表L,即把它设置为一个空表
        DestroyList(&L)  //销毁顺序线性表L
        ClearList (& L)  //将L重置为空表
        ListEmpty(L)    //判断L是否为空,若空则返回true,否则返回false
        ListLength (L)      //返回L中数据元素的个数
        GetElem(L, pos)    //返回线性表第pos个数据元素的值
        LocateElem(&L,e,compare());
        //返回L中第1个与e满足关系compare()的数据元素的位序。若这样的数据元素不存在,则返回0   
        ListInsert (&L, pos, e)
        //在L的pos位置插入e,线性表L长度加1
        ListDelete (&L, pos)
        //删除L的第pos个数据元素
        ListTraverse(L, visit( ))
        //遍历线性表L,依次对L的每个数据元素调用函数visit( )
        CreateList(&L, n, visit ())
        //创建有n个元素的线
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值