数据结构_线性表

 线性表的定义和特点

线性表是具有相同特性的数据元素的一个有限序列

(a_{1},a_{2},a_{3},......a_{i-1},a_{i},a_{i+1},....a_{n})

a{_{1}}:线性起点/起始节点

a_{i-1} :a_{i}直接前驱

a_{i+1} :a_{i}直接后继

a_{n}:线性终点/终端节点

n:元素总个数,表长

下标:是元素的序号,表示元素在表中的位置

n=0时称为空表

线性表

由n(n>0)个数据元素(结点),a_{1},a_{2},...a_{n}组成的有限序列

将非空的线性表(n>0)记作:(a_{1},a_{2},...a_{n})

这里的数据元素a_{i}(1\leq i\leq n)只是一个抽象的符号,其具体含义在不同的情况下,可以不同

例1

分析26个英文字母组成的英文表

        (A,B,C...Z)

数据元素都是字母,元素间关系是线性关系

例2

分析学生情况登记表

每条记录也是线性关系

例3

某单位历年拥有计算机的数量(4,6,45,34,33) 线性关系(先后)

例4 

12星座 (白羊座,金牛座,...双鱼座) 线性关系(先后)

同一线性表的元素必定有相同特性,数据元素之间的关系是线性关系

综上 线性表的逻辑特征是:
在非空的线性表中,有且一个开始节点a_{1},它没有直接前趋,仅有一个后继a_{2}

在非空的线性表中,有且一个终端节点a_{n},它没有直接后继,仅有一个前趋a_{n-1}

其余节点a_{i}(2\leq i\leq n-1) 仅有一个前趋a_{i-1},仅有一个后继a_{i+1}

线性表是一种典型的线性结构

线性表案例

例1

一元多项式的运算:实现两个多项式加,减,乘运算

P_{n}(x) = p_{0} + p_{1}x + p_{2}x^{2} + ... + p_{n}x^{n}

线性表P=(p_{0},p_{1},p_{2},...,p_{n})

每一项的指数i隐含在其系数p_{i}的序号中

用数组来表示

P(x) = 10 + 5x - 4x^{2} + 3x^{3} + 2x^{4}

指数用下标表示,系数用具体值表示

操作

两个多项式相加

R_{n}(x) = P_{n}(x) + Q_{m}(x)

线性表R  = (p_{0} + q_{0},p_{1} + q_{1},p_{2} + q_{2},...p_{n} + q_{m...})

例2:稀疏多项式

S(x) = 1 + 3x^{10000} + 2x^{20000}

如果用前面下标代表指数,会造成空间浪费

多项式非零项的数组表示

A(x) = 7 + 3x + 9x^{8} + 5x^{17}

B(x) = 8x + 22x^{7} - 9x^{8}

线性表  P = ((p1,e1),(p2,e2),(p3,e3),....(pm,em))

线性表A=((7,0),(3,1),(9,8).(5,17))

线性表B=((8,1),(22,7),(-9,8))

创建一个新数组c

分别从头遍历比较a和b的每一项

指数相同,对应系数相加,若其和不为0,则在c中加一个新项

指数不相同,则将指数较少的项复制到c中

一个多项式遍历完毕时,将另一个剩余项依次复制到c即可

缺陷:并不知道数组c的空间要分配多少

顺序存储结构存在问题

存储空间分配不灵活

运算的空间复杂度高(需要额外的空间)

解决问题

链式存储结构 后续详细介绍

例3:图书信息管理系统

需要的功能: 增(插入)删改查排序计数

图书表抽象为线性表

表中每本书抽象成线性表中的数据元素

图书顺序表:数组存储

图书链表:链表存储

选择适当的存储结构

实现此存储结构上的基本操作

利用基本操作完成功能

总结:

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

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

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

线性表的类型定义

抽象数据类型线性表的定义如下:

ADT List{

        数据对象: D = {   a_{i} | a_{i}属于Elemset,(i=1,2,....,n,n\geq 0)  }

        数据关系: R = { <a_{i-1},a_{i}> | a_{i-1},a_{i} 属于D_{i} (i=2,3,....n)}

        基本操作:

                InitList(&L)

        略

} ADT List

基本操作:

初始化线性表

InitList(&L)

操作结构:构造一个空的线性表L

销毁线性表

DestroyList(&L)

初始条件:线性表L已经存在

操作结果:销毁线性表L

清除线性表

ClearList(&L)

初始条件:线性表L已经存在.

操作结果:将线性表L重置为空表

判断线性表是否为空

ListEmpty(L)

初始条件:线性表L已经存在

操作结果:若线性表L为空表,则返回Ture,否则返回False

返回线性表L的元素个数

ListLlenth(L)

初始条件:线性表L已经存在

操作结果:返回线性表L中的数据元素个数

返回线性表第i个元素的值

GetElem(L,i,&e);

初始条件:线性表L已经存在,1<=i <= ListLenth(L)

操作结果:用e 返回线性表L中第i个元素的值

返回L中第1个与e满足compare()的数据元素的位序

LocateElem(L,e,compare())

初始条件:线性表L已经存在,compare()是数据元素判定函数

操作结果:返回L中第1个与e满足compare()的数据元素的位序,若这样的数据元素不存在则返回值为0.

待补充

忘保存,明天补上

线性表的顺序表示和实现2

顺序表的特点:

以物理位置相邻表示逻辑关系

任一元素均可随机存取(优点)

用高级语言实现数据类型

用一维数组表示顺序表

线性表可变(删除)

数组长度不可动态定义

注:一维数组的定义方式

类型说明符 数组名[常量表达式]

 

说明:常量表达式中可以包含常量和符号常量,不能包含变量,, 即C语言中不允许对数组的大小做动态定义

解决方式:用一变量表示顺序表的长度属性

如下所示

c定义结构体

#define LIST_INIT_SIZE 100 
//线性表存储空间的初始分配量
//定义了一个结构体 ​SqList​,包含一个数组和一个整型变量 
typedef struct { Elem Type elem[LIST_INIT_SIZE];int length; //当前长度
} SqList;

实例

多项式的顺序存储结构类型定义

c实现

#define MAXSIZE 1000
//多项式可能达到的最大长度//结构体:多项式非零项定义
typedef struct {float p; //系数int e; //指数
} Polynomial;//结构体:多项式顺序存储结构
typedef struct{Polynomial *elem; //基地址int length; //当前项个数
} SqList;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓模拟器如何修改ip地址

最近很多老铁玩游戏的&#xff0c;想多开模拟器一个窗口一个IP&#xff0c;若模拟器窗口开多了&#xff0c;IP一样会受到限制&#xff0c;那么怎么更换自己电脑手机模拟器IP地址呢&#xff0c;今天就教大家一个修改模拟器IP地址的方法&#xff01;废话不多说&#xff0c;直接上…

alibaba EasyExcel 简单导出数据到Excel

导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.1</version> </dependency> 1、alibaba.excel.EasyExcel导出工具类 import com.alibaba.excel.EasyExcel; import …

探索哈希函数:数据完整性的守护者

引言 银行在处理数以百万计的交易时&#xff0c;如何确保每一笔交易都没有出错&#xff1f;快递公司如何跟踪成千上万的包裹&#xff0c;确保每个包裹在运输过程中没有丢失或被替换&#xff1f;医院和诊所为庞大的患者提供有效的医疗保健服务&#xff0c;如何确保每个患者的医疗…

假阳性和假阴性、真阳性和真阴性

在深度学习的分类问题中&#xff0c;真阳性、真阴性、假阳性和假阴性是评估模型性能的重要指标。它们的定义和计算如下&#xff1a; 真阳性&#xff08;True Positive, TP&#xff09;&#xff1a; 定义&#xff1a;模型预测为正类&#xff08;阳性&#xff09;&#xff0c;且实…

电梯修理升级,安装【电梯节能】能量回馈设备

电梯修理升级&#xff0c;安装【电梯节能】能量回馈设备 1、节能率评估 15%—45% 2、降低机房环境温度&#xff0c;改善电梯控制系统的运行环境&#xff1b; 3、延长电梯使用寿命&#xff1b; 4、机房可以不需要使用空调等散热设备的耗电&#xff0c;间接节省电能。 欢迎私询哦…

智能数字人系统的主要功能

智能数字人系统或虚拟数字人系统&#xff0c;是指利用人工智能技术构建的虚拟人物形象&#xff0c;能够与人进行自然交互的系统。数字人系统的主要功能包括以下几个方面。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 语言理解与…

昇思25天学习打卡营第2天|初学入门

昇思25天学习打卡营第2天 文章目录 昇思25天学习打卡营第2天网络构建定义模型类模型层nn.Flattennn.Densenn.ReLUnn.SequentialCellnn.Softmax 模型参数 函数式自动微分函数与计算图微分函数与梯度计算Stop GradientAuxiliary data神经网络梯度计算 问题集合打卡记录 网络构建 …

华为DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN&#xff08;Software Defined Network&#xff09;即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。其核心理念通过将网络设备控制平面与数据平面分离&#xff0c;从而实现了网络控制平面的集中控制&#xff0c;为…

移动网络捕获在数字化转型中的重要性

数字化转型重新定义了企业运营和与客户互动的方式。它为组织提供价值的方式带来了根本性的转变&#xff0c;使流程更易于访问、更高效、更具协作性和更安全。然而&#xff0c;跟上不断发展的数字环境可能是一项挑战&#xff0c;而未能接受数字化转型的企业则面临被淘汰的风险。…

【MindSpore学习打卡】应用实践-计算机视觉-ShuffleNet图像分类:从理论到实践

在当今的深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;已经成为图像分类任务的主流方法。然而&#xff0c;随着网络深度和复杂度的增加&#xff0c;计算资源的消耗也显著增加&#xff0c;特别是在移动设备和嵌入式系统中&#xff0c;这种资源限制尤为突出。…

25计算机考研,这些学校双非闭眼入,性价比超高!

计算机考研&#xff0c;好的双非院校也很多&#xff01; 对于一些二本准备考研的同学来说&#xff0c;没必要一直盯着985/211这些院校&#xff0c;竞争激烈不说&#xff0c;容易当陪跑&#xff0c;下面这些就是不错的双非院校&#xff1a; 燕山大学南京邮电大学南京信息工程大…

WPS-Word文档表格分页

一、问题描述 这种情况不好描述 就是像这种表格内容&#xff0c;但是会有离奇的分页的情况。这种情况以前的错误解决办法就是不断地调整表格的内容以及间隔显得很乱&#xff0c;于是今天去查了解决办法&#xff0c;现在学会了记录一下避免以后忘记了。 二、解决办法 首先记…

8.SQL注入-基于insert,update利用案例

SQL注入-基于insert/update利用案例 sql语句正常插入表中的数据 insert into member(username,pw,sex,phonenum,address,email) values(xiaoqiang,1111,1,2,3,4); select * from member;例如插入小强数据&#xff0c;如图所示&#xff1a; 采用or这个运算符&#xff0c;构造…

实测有效:Win11右键默认显示更多

Win11最大的变化之一莫过于右键菜单发生了变化&#xff0c;最大的问题是什么&#xff0c;是右键菜单很多时候需要点两次&#xff0c;实在是反人类 第一步 复制以下命令直接运行&#xff1a; reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905ba…

python_zabbix

zabbix官网地址&#xff1a;19. API19. APIhttps://www.zabbix.com/documentation/4.2/zh/manual/api 每个版本可以有些差异&#xff0c;选择目前的版本在查看对于的api接口#token接口代码 import requests apiurl "http://zabbix地址/api_jsonrpc.php" data {&quo…

web的学习和开发

这个使同步和异步的区别 今天主要就是学了一些前端&#xff0c;搞了一些前端的页面&#xff0c;之后准备学一下后端。 我写的这个项目使百度贴吧&#xff0c;还没有写er图。 先看一下主界面是什么样子的。 这个是主界面&#xff0c;将来后面的主要功能点基本上全部是放在这个上…

推动能源绿色低碳发展,风机巡检进入国产超高清+AI时代

全球绿色低碳能源数字转型发展正在进入一个重要窗口期。风电作为一种清洁能源&#xff0c;在碳中和过程中扮演重要角色&#xff0c;但风电场运维却是一件十足的“苦差事”。 传统的风机叶片人工巡检方式主要依靠巡检人员利用高倍望远镜检查、高空绕行下降目测检查(蜘蛛人)、叶…

STM32——Modbus协议

一、Modbus协议简介&#xff1a; 1.modbus介绍&#xff1a; Modbus是一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气 Schneider Electric&#xff09;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域…

PDF压缩工具选哪个?6款免费PDF压缩工具分享

PDF文件已经成为一种常见的文档格式。然而&#xff0c;PDF文件的体积有时可能非常庞大&#xff0c;尤其是在包含大量图像或复杂格式的情况下。选择一个高效的PDF压缩工具就显得尤为重要。小编今天给大家整理了2024年6款市面上反响不错的PDF压缩文件工具。轻松帮助你找到最适合自…

漆包线行业生产管理革新:万界星空科技MES系统解决方案

一、引言 在科技日新月异的今天&#xff0c;万界星空科技凭借其在智能制造领域的深厚积累&#xff0c;为漆包线行业量身打造了一套先进的生产管理执行系统&#xff08;MES&#xff09;解决方案。随着市场竞争的加剧&#xff0c;漆包线作为电气设备的核心材料&#xff0c;其生产…