2.线性结构

2.线性结构

2.1线性表及其实现

多项式的表示

方法1:顺序存储结构直接表示
数组各分量对应多项式各项
方法2:顺序存储结构表示非零项
按指数大小有序存储!
方法3:链表结构存储非零项
链表中每个几点存储多相持中的一个非零项,包括系数和指数两个数据域以及一个指针域

什么是线性表

多项式表示的问题的启示:

  1. 同一个问题可以有不同的表示(存储)方法
  2. 有一类共性问题:有序线性序列的组织和管理
    线性表(Linear List):有同类型数据元素构成有序序列的线性结构
    • 表中元素个数成为线性表的长度
    • 线性表没有元素时,成为空表
    • 表起始位置称表头,表结束位置称表尾

线性表的抽象数据类型描述

类型名称:线性表(List)
数据对象集:线性表是n(>=0)个元素构成的有序序列
操作集:线性表L∈List,整数i表示位置,元素X∈ElementType,线性表基本操作主要有:

  1. List MakeEmpty(): 初始化一个空线性表;
  2. ElementType FindKth(int K, List L): 根据位序K,返回相应元素;
  3. int Find(ElementType X, List L): 在线性表L中查找X的第一次出现位置;
  4. void Insert(ElementType X, int i, List L): 在位序i前插入一个新元素X;
  5. void Delete(int i, List L): 删除指定位序i的元素;
  6. int Length(List L): 返回线性表L的长度n。

线性表的顺序存储实现

利用数组的连续存储空间存放线性表的各元素

线性表的联诗存储实现

不要求逻辑上相邻的两个元素物理商业相邻;通过“链”建立起数据元素之间的逻辑关系
插入、删除不需要移动数据元素,只需要修改“链”。

广义表(Generalized List)
  • 广义表示线性表的推广
  • 对于线性表而言,n个元素都是基本的单元素;
  • 广义表中,这些元素不仅可以是单元素也可以是另一个广义表。

    多重链表

多重链表:链表中的节点可能同时隶属于多个链

  • 多重链表中节点的指针域会有多个,如前面例子包含了Next和SubList两个指针域;

  • 但包含两个指针域的链表并不一定是多重链表,比如双向链表不是多重链表

  • 多重链表有广泛的用途:基本上如树、图这样相对复杂的数据机构都**可以采用多重链表方式实现存储。
    矩阵可以用二维数组表示,但二维数组表示有两个缺陷:

    • 一是数组的**大小需要事先确定,
    • 对于“稀疏矩阵”,将造成大量的存储空间浪费。
      分析:采用一种典型的多重链表——十字链表来存储稀疏矩阵
  • 只存储矩阵非0元素项

  • 结点的数据域:行坐标Row、列坐标Col、数值Value

  • 每个结点通过两个指针域,把同行同列串起来;

    • 行指针(或称为向右指针)Right
    • 列指针(或称为乡下指针)Down
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-雨后天晴-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值