数据结构与算法2 线性结构之线性表及其实现

数据结构与算法

多项式的表示

在这里插入图片描述

  • 方法1的缺点:造成空间的巨大浪费,做了无用功

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

线性表及顺序存储

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 查找成功的平均比较次数为(n+1)/2,运气好第一次就找到了,运气差最后一次才找到,则平均时间性能为O(n)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

链式存储及查找

在这里插入图片描述

  • 不同于顺序存储,链式存储时只知道一个链表头很难知道第i个元素的位置或链表的长度,而顺序存储可以通过数组下标查找位置,Last指针求长度,因此在链式存储中这两个问题就变得复杂了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注意这里在插入时,s->Next=p->Next与p->Next=s不能对调,如果对调,s->Next指向s,不能完成正确插入
    在这里插入图片描述

广义表

在这里插入图片描述
在这里插入图片描述

  • 由于广义表中的元素可以是单元素(常量),也可以是另一个广义表(通过指针指向),C语言提供了union类型,可以将单元素与广义表联合起来,通过Tag标记,Tag=0时表示单元素,Tag=1时表示广义表,这样就可以实现两种类型的区分和应用

多重链表

在这里插入图片描述

  • 注意双向链表不是多重链表
    在这里插入图片描述
    在这里插入图片描述
  • Term类型有两个指针,一个指向同一行,一个指向同一列,这样分别在行与列上形成循环链表,状如十字,于是称为十字链表,同时Term类型还含有该结点的数值
  • Head类型作为行和列的头结点,因此行的头结点与列的头结点实际上时同一个结点
    在这里插入图片描述
  • 矩阵中的Term类型代表非零项,而左上角的Term类型结点代表整个稀疏矩阵的入口,其中提供了几行几列,非零项的个数,如图中为4行5列,7个非零项,通过该结点的指针可以找到所有列的头结点,所有行的头结点
    在这里插入图片描述
  • Term类型与Head类型可以像广义链表一样通过union将两者联合在一起,上图中Tag类型就是两者union形成的统一结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值