线性表 上(小白笔记)

文章介绍了线性表的定义,包括起始节点、终端节点和数据元素的概念,并通过例子展示了线性表的应用。讨论了线性表的存储方式,如数组和链式存储结构,特别是在处理稀疏数据时的空间效率。此外,文章提到了线性表的基本操作,如初始化、销毁、查找、插入和删除,以及如何进行排序和合并。
摘要由CSDN通过智能技术生成

一 线性表的定义和特点

定义:

定义很简单,第一个叫做起始节点,最后一个叫做终点或者终端节点,中间的都是节点,前一个就是直接前趋,后一个就是直接后继,每一个元素都有一个下标,是他的序号,表示他在线性表的位置。

n为元素总的个数,n为0的话就是空表。

例如:26个字母,每个字母之间有先后关系。其中数据元素是字母。

例二;

其中,每个学生的信息就是数据元素。

例三

注意相同特性。

起始节点和终端节点有些特殊。

二 案例引入

怎么存储呢,就是把他们的每一项的系数拿出来,做成一个线性表。

最后,用数组存起来他们的对应的指数

但是,对于稀疏多项式

你要是这么弄的话有点浪费空间。比如这个空了很多,怎么办捏

空的就不存了呗,你以为呢

我记得c语言中有一个结构体,可以用结构体数组来解决这类问题

对于最后的排序,

做一个二维数组,这里先不用结构体了。

这里,总之就是让两个线性表的数都一遍,如果一样,就加到一起,放到c表里面,(已经进去了,停止和另一个表中的元素比较,不再比了。)如果不同,就把小的放到里面,当然,如果对应的指数已经存在了一个项了。那就直接加进去吧。

数组c的大小是不定的,那么我们定义的时候怎么办呢。

这个时候就体现出精打细算的链式存储结构的好处了。

其中p表示当前比较的数据元素。首先对b的1和a的1比较一下

0更小,就把0放到所谓的抽象的c里面,接下来,a的第一个比较完了,该2了。发现指数都是1

,那就系数求和

这个时候,其实从a或者b里面拿无所谓了,反正是最后是系数求和,放到所谓的c里面。

好了,b的第一个元素你也已经用过了,接下来就是b的第二个和a的第三个元素了。

同理

就是这么一个流程,最后具体的代码以后再说

下一个案例

不得不说,我又想到了c语言的结构体。

这几个都可以是简单类型或者复杂类型,基本操作有很大的相似性。其实大差不差,嘻嘻。

三 线性表的类型定义

先复习一下抽象数据类型,它的定义一共有三个部分,数据对象,数据对象之间的关系集合,作用在这些数据对象上的基本操作。

因此,我的线性表的定义如下

具体实现后面再说,首先的线性表初始化

还有就是销毁线性表

有条件,先得存在

清楚线性表,就是让他留着,但是里面没东西了

判断是不是空的

.

计算元素个数

L是线性表的名字,i是位置,存到e上面,因此得输入进去e的地址

这个操作是查找定位的,首先得线性表得存在吧

然后compare可以是比较大,或者小,或者等于,以后有具体的实现

这一波,属于是找一下前趋

这是找后继

终于来了一个比较常用的了 ,特殊的,可以在第一个之前或者最后一个的后面的之前,

你看,他是往前放的

例如往i放

当然了还有删除的额操作,

visited()未定,想干啥都可以

重点在于这是遍历的哦

Travels意思就是遍历

咯,这里是思路的梳理,后续才会学习怎么存储和实现,看看顺序结构下是怎么存储的,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值