数据结构与算法——第二章 线性表(1)

本文介绍了线性表的基本概念,包括其作为数据元素有限序列的定义,以及线性表的特点。通过案例展示了线性表在存储结构选择上的重要性,特别是对于稀疏多项式和图书信息管理系统等应用。线性表的抽象数据类型(ADT)被定义,包括构造、销毁、插入、删除等基本操作。此外,还强调了线性表中数据元素可以是简单或复杂类型,并提出了根据共性逻辑结构和基本操作来设计程序的重要性。
摘要由CSDN通过智能技术生成

目录

回顾:

2.1 线性表的定义与特点

2.2 案例引入

2.3 线性表的类型定义

基本操作

回顾:

2.1 线性表的定义与特点

1.线性表:具有相同特性的数据元素的一个有限序列。

 e.g.26个字母(A,……,Z):数据元素都是字母;元素间关系是线性。

2.2 案例引入

1.稀疏多项式要把指数单独存储,顺序多项式则不需要。

 求和:

 存在问题:
        (1)存储空间分配不灵活;

        (2)运算的空间复杂度高。

所以可以使用链式存储结构:

 2.图书信息管理系统

 所以要适当的选择合适的存储结构。

3.总结

(1)线性表中数据元素的类型可以为:简单类型,也可以为复杂类型

(2)许多实际应用问题的基本操作有很大的相似性,不应为每个具体应用单独编写一个程序;

(3)从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作

2.3 线性表的类型定义

1.抽象数据类型线性表定义:

ADT List{

    数据对象:D = {ai | ai属于Elemset,(i = 1,2,……,n, n≥0)}
    数据关系:R = {<ai-1, ai> | ai-1, ai属于D,(i=2,3,……,n)}
    基本操作:
    InitList(&L);              // 构造一个空的线性表L
    DestroyList(&L);           // 销毁线性表L,前提线性表L存在    
    ClearList(&L);             // 将线性表L重置为空表,前提线性表L存在
    ListEmpty(L);              // 若L为空表,则返回True;否则返回False;前提线性表L存在
    ListLength(L);             // 返回L中的数据元素个数,前提线性表L存在
    ListInsert(&L,i,e);
    ListDelete(&L,i,&e);       // 
    GetElem(L,i,&e);           // 用e返回线性表L中第i个数据元素的值,前提线性表L存在,1<=i<=ListLength(L)
    LocateElem(L,e,compare()); // 返回L中第1个与e满足compare()的数据元素的位序。若这样的数据元素不存在则返回值为0,前提L存在,compare()是数据元素判定函数;即找一个与e这个值关于compare这个条件的
    

    ……等等
}ADT List //定义了一个叫做List的抽象类型

基本操作:

InitList(&L);            

        构造一个空的线性表L

DestroyList(&L);           

        销毁线性表L,前提线性表L存在    

ClearList(&L);            

        将线性表L重置为空表,前提线性表L存在

ListEmpty(L);              

        若L为空表,则返回True;否则返回False;前提线性表L存在

ListLength(L);            

        返回L中的数据元素个数,前提线性表L存在

ListInsert(&L,i,e);

        在L的第i个位置之前插入新的数据元素e,L的长度加1,前提L存在,i<=i<=ListLength(L)+1。

ListDelete(&L,i,&e);     

         删除L的第i个数据元素,并用e返回其值,L的长度减1,前提L存在,i<=i<=ListLength(L)。

ListTraverse(&L, visited())

        依次对线性表中每个元素调用visited(),前提L存在。

GetElem(L,i,&e);          

        用e返回线性表L中第i个数据元素的值,前提线性表L存在,1<=i<=ListLength(L)

LocateElem(L,e,compare());

        返回L中第1个与e满足compare()的数据元素的位序。若这样的数据元素不存在则返回值为0,前提L存在,compare()是数据元素判定函数;即找一个与e这个值关于compare这个条件的

PriorElem(L, cur_e, &pre_e);

        若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败;pre_e无意义。

NextElem(L, cur_e, &next_e);

        若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无意义。

NextElem(L, cur_e, &next_e);

        若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无意义。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清园暖歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值