线性表学习Day1

线性表(Linear List):
由n(n>=0)个数据元素(结点)a1,a2,…,an组成的有限序列。
线性表是具有相同特性的数据元素的一个有限序
表的内容称为数据元素
N为数据元素的个数
N=0为空表 N!=0时 表记作(a1,a2,a3,****,an)
其中 a1线性起点(起始节点)
an线性终点(终端节点)
ai-1是ai的直接前趋 ai+1是ai的直接后继
下标是元素的序号 表示元素在表中的位置
EP: 英文表(A,B,C,D,…,Z)
数据元素是字母 元素间关系是线性的

         线性表的特征:
             非空线性表:
         有且只有一个开始结点a1,他没有直接前趋,有且只有一个直接后继a2。
         有且只有一个终端结点an,他有且只有一个直接前趋an-1,没有直接后继。
         其余内部结点ai(2<=i<=n-1)都有且只有一个直接前趋和直接后继。 

案例引入 1.一元多项式的运算:实现两个多项式的加,减,乘运算。

       Rn(x)=Pn(x)+Qn(x) 线性表R=(p0+q0,p1+q1,...,pn+qn)

2.稀疏多项式
只记录用到的系数和次数
P=((p1,e1),(p2,e2),…,(pn,en))分别对每个相加的表从头遍历每一项指数相同 对应系数相加 若和不为0,则新表增加一个新项指数不同 则将指数较小的项复制到新表中
顺序存储结构存在的问题:
存储空间分配不灵活 &运算的空间复杂度高
3.信息管理系统需要功能: 插找 插入 删除 修改 排序 计数
图书表抽象为线性表 每本图书抽象线性表中的数据元素

线性表的抽象数据类型操作集合
线性表的类型定义ADT
List
{
数据对象: D={ai|ai属于Elemset}
数据关系: R={<ai-1,ai>}有序
基本操作:InitList(&L);
Destroy(&L);
ListInsert(&L,i,e);
ListDelete(&L,i,&e);等等…
}ADT List

操作列举

InitList(&L)(Initialization List)
    操作结果:构造一个空的线性表L
DestroyList(&L)
    初始条件:线性表L已存在
    操作结果:销毁线性表L
ClearList(&L)
   初始条件:线性表L已存在
   操作结果:将L重置为空表
 ListEmpty(L) 
   初始条件:线性表L已存在  
   操作结果:若L为空表 返回TRUE 否则 返回FALSE
 ListLength(L)
    初始条件:线性表L已经存在 
    操作结果:  返回线性表L中元素的个数
 GetElem(L,i,&e) 
     初始条件:线性表L已存在,i<=i<=ListLength(L)
     操作结果:用e返回线性表L中第i个数据元素的值
 LocateElem(L,e,compare()) 
     初始条件:线性表已经存在 compare()数据元素判断函数 
     操作结果: 返回线性表L中第一个与e满足compare()的数据元素的位序,如果不存在则返回0
  PriorElem(L,cur_e,&pre_e)  
      初始条件 L已存在 
      操作结果 若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前趋 否则操作无意义
  NextElem(L,cur_e,&next_e)
       初始条件 L已存在  
       操作结果 若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作无意义
   ListInsert(&L,i,e) 
        初始条件 L已存在,1<=i<=ListLength(L)+1
        操作结果 在L的第i个位置之前插入新的数据元素e,L的长度加一
    ListDelete(&L,i,&e)  
          初始条件 L已存在,1<=i<=ListLength(L) 
        操作结果 删除第i个数据元素 并用e返回其值,L的长度减一。
    ListTraverse(&L,visited())
          初始条件:L已存在  
          操作结果:依次对线性表中每个元素调用visited() 

以上为线性表 逻辑结构上定义的运算。提出了做什么 后面需要在已知做什么后解决如何做。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Z小脏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值