数据结构(五)——初识线性表

news2024/11/16 20:36:35

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年后端赛道第第七
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年长沙赛道第一
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓csdn2023年大二赛道第二
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营
获得国家荣誉3项省级荣誉4项以及多项校院级

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 数据结构——初识线性表
    • 介绍
    • 线性表的定义
      • 解读
      • 线性表的例子
        • 案例引入
        • 多项式操作
          • 案例:

数据结构——初识线性表

介绍

​ 在一列火车中,每个车厢都有一个特定的位置,车厢按照一个明确的顺序相连。这类似于线性表中的元素按照特定的顺序排列。每个车厢都知道它前面和后面连接的车厢是哪一个(就像线性表中的每个元素都有一个前驱和一个后继)。

​ 在这样的结构中,可以很容易地添加或删除车厢(在线性表中这对应于插入和删除操作)。例如,如果我们想在第3车厢和第4车厢之间添加一个新的车厢,我们可以断开第3车厢和第4车厢之间的连接,然后将新的车厢插入其中。

​ 同时,如果我们知道第5车厢后面是什么车厢,我们可以非常快速地找到它(这对应于线性表中的访问操作)。

​ 此外,车长可以通过检查每个车厢来确保所有的车厢都处于正确的位置,并且没有车厢被遗漏。如果一个车厢丢失了,那么这将很快被发现,因为它前后的车厢将不再连接。

线性表的定义

由n(n≥O)个数据特性相同的元素构成的有限序列称为线性表。

img

  • 线性表中元素的个数n(n≥O)定义为线性表的长度,n=O时称为空表。
  • 将非空的线性表(n>O)记作(a1,a2,a3,…,an)
  • 这里的数据元素ai(1≤i≤n)只是个抽象的符号,其具体含义在不同情况下可以不同。
  • 在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2;
  • 有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1;
  • 其余的内部结点ai,(2<i<n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1

解读

线性表就像是一个排队的队列。队列的长度可以用来描述里面有多少人正在排队,我们把这个称作“线性表的长度”。如果队列里没有人,我们就说这个队列是“空的”。

在一个非空的队列里,我们可以用一个列表来表示所有在队列中的人:(a1, a2, a3, …, an)。

在这里:

  • “a1”是第一个人,在队列的最前面。他前面没有人。
  • “an”是最后一个人,在队列的最后。他后面没有人。
  • 中间的每个人,比如“a2”到“an-1”,都有一个人在他前面和一个人在他后面。

这样,每个人都知道他前后是谁,从而形成了一个有序的队列。

线性表的例子

26个英文字母的字母表:(A, B, C, …,Z);学生信息表;12星座。

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

案例引入

img

逻辑结构抽象为线性表存储结构呢?

image-20230916143931660

image-20230916143938757

运行的多项式时,就要用一个长度为20001的线性表来表示,而表中仅有3个非零元素,此时将会造成存储空间的很大浪费,由此可改变元素设定,对多项式的每一项,可用(系数,指数)唯一确定。

img

每一个系数与指数也构成了一个线性表只不过是线性表的每个数据元素有2个数据项

结构体数组存储,(结构体实现每一项。)这个我们以后会相信的说的。

多项式操作
  • 加法

A=((7,0),(3,1),(9,8),(5,17))[4项]

B=((8,1),(22,7),(-9,8),)[3项]

创建一个新的多项式c用来存放a与b和分别从头遍历比较a和b的每一项指数相同,对应系数相加,若其和不为零,则在c中增加一个新项指数不相同,则将指数较小的项复制到c中一个多项式已遍历完毕时,将另一个剩余项依次复制到c中即可

和有多少项呢?

最少:指数一样,系数正好互为相反数项数为0最多指数都不一样项数为元素个数之和。项数不容易确定太大了浪费空间,太小了放不下。顺序存储结构存在问题存储空间分配不灵活;运算的空间复杂度高尝试链式存储结构(不需要额外的空间只利用已有的空间)

image-20230916144235181

案例:

​ 图书信息管理系统。出版社有一些图书数据保存在一个文本文件 book.txt中,为简单起见,在此假设每种图书只包括三部分信息:SBN(书号)、书名和价格,文件中的部分数据如图所示。现要求实现一个图书信息管理系统,包括以下6个具体功能。

  • (1)查找:根据指定的ISBN或书名查找相应图书的有关信息,并返回该图书在表中的位置序号。
  • (2)插入:插入一种新的图书信息。
  • (3)删除:删除一种图书信息。
  • (4)修改:根据指定的ISBN,修改该图书的价格
  • (5)排序:将图书按照价格由低到高进行排序。
  • (6)计数:统计图书表中的图书数量。

逻辑结构:根据图书表的特点将其抽象成一个线性表,每本图书作为线性表中的一个元素

存储结构:

a.顺序

img

b.链式

img

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

【Java集合篇】HashMap 在 get 和 put 时经过哪些步骤

HashMap在get和put时经过哪些步骤? ✔️ 典型解析✔️get方法✔️put方法✔️ 拓展知识仓✔️ HashMap如何定位key✔️ HashMap定位tablelndex的骚操作作✔️HashMap的key为null时&#xff0c;没有hashCode是如何存储的?✔️ HashMap的value可以为null吗? 有什么优缺点讷? …

STM32通用定时器-输入捕获-脉冲计数

一、知识点 编码器   两相编码器&#xff08;正交编码器&#xff09;&#xff1a;两相编码器由 A 相和 B 相组成&#xff0c;相位差为 90 度。当旋转方向为顺时针时&#xff0c;A 相先变化&#xff0c;然后 B 相变化&#xff1b;当旋转方向为逆时针时&#xff0c;B 相先变化…

让人头痛事务问题到底要如何解决?

前言 正好前段时间我在公司处理过这个问题&#xff0c;我们当时由于项目初期时间比较紧张&#xff0c;为了快速完成业务功能&#xff0c;忽略了系统部分性能问题。项目顺利上线后&#xff0c;专门抽了一个迭代的时间去解决大事务问题&#xff0c;目前已经优化完成&#xff0c;并…

【Linux Shell】7. printf 命令

文章目录 【 1. printf 命令的使用方法 】【 2. 实例 】 【 1. printf 命令的使用方法 】 printf 命令模仿 C 程序库&#xff08;library&#xff09;里的 printf() 程序&#xff0c;printf 由 POSIX 标准所定义&#xff0c;因此使用 printf 的脚本比使用 echo 移植性好。prin…

基于引力搜索算法优化的Elman神经网络数据预测 - 附代码

基于引力搜索算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于引力搜索算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于引力搜索优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…

静态网页设计——电影角(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 使用技术&#xff1a;HTMLCSSJS 主要内容&#xff1a;本网页主要利用HTML语言编写&#xff0c;简要介绍世界上一些主要国家&#xff0c;例如&#xff0c;中&#xff0c;…

从马尔可夫奖励过程到马尔可夫决策到强化学习【02/2】

一、说明 随着 Open AI 于 2023 年 11 月 6 日发布GPT 代理&#xff0c;我们所有人都对它带来的支持和灵活性着迷。想象一下&#xff0c;有一个个性化的数字助手始终在您身边&#xff0c;根据您的喜好完成日常平凡任务或艰巨任务。但为这些定制代理提供动力的是强化学习&#x…

厚积薄发11年,鸿蒙究竟有多可怕

12月20日中国工程院等权威单位发布**《2023年全球十大工程成就》。本次发布的2023全球十大工程成就包括“鸿蒙操作系统”在内。入围的“全球十大工程成就”&#xff0c;主要指过去五年由世界各国工程科技工作者合作或单独完成且实践验证有效的&#xff0c;并且已经产生全球影响…

指针数组做main函数的形参

目录 ​编辑 1. 指针数组 1.1 基本概念 1.2 简单示例 2. 指针数组做main形参 2.1 int main(int argc, char *argv[]); 2.2 简单示例 1. 指针数组 1.1 基本概念 指针数组是指一个数组&#xff0c;其中的每个元素都是指针。 这意味着数组中的每个元素都存储一个地址&…

啊哈c语言——逻辑挑战8:验证哥德巴赫猜想

上面这封书信是普鲁士数学家哥德巴赫在1742年6月7日写给瑞士数学家欧拉的&#xff0c;哥德巴赫在书信中提出了“任一大于2的整数都可以写成3个质数之和”的猜想。当时&#xff0c;哥德巴赫遵照的是“1也是素数”的约定。现今&#xff0c;数学界已经不使用这个约定了。哥德巴赫原…

LLM增强LLM;通过预测上下文来提高文生图质量;Spikformer V2;同时执行刚性和非刚性编辑的通用图像编辑框架

文章首发于公众号&#xff1a;机器感知 LLM增强LLM&#xff1b;通过预测上下文来提高文生图质量&#xff1b;Spikformer V2&#xff1b;同时执行刚性和非刚性编辑的通用图像编辑框架 LLM Augmented LLMs: Expanding Capabilities through Composition 本文研究了如何高效地组…

vmware虚拟机安装esxi7.0步骤

一、安装准备 1、下载镜像文件 下载链接&#xff1a;https://pan.baidu.com/s/12XmWBCI1zgbpN4lewqYw6g 提取码&#xff1a;mdtx 2、vmware新建一个虚拟机 2.1 选择自定义 2.2 选择ESXi对应版本 2.3 选择稍后安装操作系统 2.4 默认选择 2.5 自定义虚拟机名称及存储位置 2…

手机与电脑投屏互联方案

手机 to 电脑 无线显示器 搜索"无线显示器"找到系统自带的应用 没有的话, 可能需要安装一下 电脑上打开无线显示器 手机中打开投屏 就投上去了, 感觉很卡, 不是很流畅,但是是系统自带的功能, 比较方便 无法连接时可以检查一下这里的设置 scrcpy screen copy 屏幕…

透明OLED屏制作:工艺与技术挑战

透明OLED屏作为一种前沿的显示技术&#xff0c;其制作过程涉及一系列复杂的工艺和技术挑战。作为一名专注于OLED技术研发的工程师&#xff0c;我将为大家深入解析透明OLED屏的制作过程&#xff0c;以及所面临的挑战。 首先&#xff0c;透明OLED屏的制作过程大致可分为以下几个步…

LabVIEW开发智能水泵监测系统

LabVIEW开发智能水泵监测系统 水泵作为水利、石化、农业等领域的重要设备&#xff0c;其能效与健康状态直接关系到提灌泵站的运行效率。尽管水泵机组在全球能源消耗中占有显著比例&#xff0c;但实际运行效率常因设备老化和维护不当而远低于预期。这一状况需要更高效的监测手段…

Proxmox VE 8 安装开源监控平台Centreon 23

作者&#xff1a;田逸&#xff08;formyz&#xff09; 非常好用的开源监控系统Centreon从版本号21.40以后&#xff08;包括Centreon 21.40这个版本&#xff09;&#xff0c;不在提供ISO一键式安装包&#xff0c;取而代之的是在线脚本安装和VMware虚拟机或者Oracle VirtualBox 虚…

1-并发编程线程基础

什么是线程 在讨论什么是线程前有必要先说下什么是进程&#xff0c;因为线程是进程中的一个实体&#xff0c;线程本身是不会独立存在的。 进程是代码在数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;线程则是进程的一个执行路径&#…

线性代数_对称矩阵

对称矩阵是线性代数中一种非常重要的矩阵结构&#xff0c;它具有许多独特的性质和应用。下面是对称矩阵的详细描述&#xff1a; ### 定义 对称矩阵&#xff0c;即对称方阵&#xff0c;是指一个n阶方阵A&#xff0c;其转置矩阵等于其本身&#xff0c;即A^T A。这意味着方阵A中的…

YOLOv8模型yaml结构图理解(逐层分析)

前言 YOLO-V8&#xff08;官网地址&#xff09;&#xff1a;https://github.com/ultralytics/ultralytics 一、yolov8配置yaml文件 YOLOv8的配置文件定义了模型的关键参数和结构&#xff0c;包括类别数、模型尺寸、骨架&#xff08;backbone&#xff09;和头部&#xff08;hea…