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

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

在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.hqwc.cn/news/324938.html

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

相关文章

redis安装与配置

目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本&#xff1a; 3. 安装 …

Go语言中的HTTP请求和响应处理

在Web开发中&#xff0c;HTTP请求和响应是核心的交互方式。Go语言&#xff0c;作为一种高效且现代的编程语言&#xff0c;为开发者提供了简洁、强大的工具来处理HTTP请求和响应。本文将简要介绍在Go语言中如何处理HTTP请求和响应。 在Go语言中&#xff0c;HTTP请求和响应的处理…

ReCAPTCHA 解决方案的自动识别和解决方法

ReCAPTCHA&#xff0c;作为广泛使用的安全措施&#xff0c;旨在区分人类和自动化机器人。然而&#xff0c;技术的进步导致了自动识别和解决 ReCAPTCHA 挑战的方法的发展。在本文中&#xff0c;我们将探讨自动 ReCAPTCHA 识别和解决技术的概念&#xff0c;以及创新解决方案 Caps…

Spring见解4 基于注解的AOP配置

5.基于注解的AOP配置 5.1.创建工程 5.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation…

学习使用layPage, 多功能JS分页组件/插件的方法

学习使用layPage, 多功能JS分页组件/插件的方法 效果图分页代码 效果图 点击查看链接 分页代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>Layui</title><meta name"renderer" content"we…

SpringBoot中动态注册接口

1. 说明 接口注册&#xff0c;使用RequestMappingHandlerMapping来实现mybatis中动态执行sql使用github上的SqlMapper工具类实现 2. 核心代码片段 以下代码为spring动态注册接口代码示例 Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping;publ…

鸿蒙应用中的通知

目录 1、通知流程 2、发布通知 2.1、发布基础类型通知 2.1.1、接口说明 2.1.2、普通文本类型通知 2.1.3、长文本类型通知 2.1.4、多行文本类型通知 2.1.5、图片类型通知 2.2、发布进度条类型通知 2.2.1、接口说明 2.2.2、示例 2.3、为通知添加行为意图 2.3.1、接…

Linux——系统安全及应用

一、基本安全措施 1、系统账号清理 常见的非登录用户账号包括bin、daemon、 adm、lp、mail等。为了确保系统安全&#xff0c;这些用户账号的登录Shell通常是/ sbin/nologin&#xff0c;表示禁止终端登录&#xff0c;应确保不被人为改动。 //将非登陆用户的Shell设为/sbin/nolo…

sqlserver把Long类型的时间转换为可视化的时间

SqlServer 把Long类型日期还原yyyy-MM-dd HH:mm:ss格式日期&#xff1a; SELECT CONVERT(DATETIME, Dateadd(second, 1704330940847 / 1000, 19700101 08:00), 111) AS tt SqlServer 把Long类型日期还原yyyy-MM-dd格式日期&#xff1a; SqlServer中&#xff0c;按照UTC计算标准…

Prometheus插件安装(cadvisor)

简介 当docker服务数量到一定程度&#xff0c;为了保证系统的文档&#xff0c;我们就需要对docker进行监控。一般情况下我们可以通过docker status命令来做简单的监控&#xff0c;但是无法交给prometheus采集&#xff0c;因此谷歌的cadvisor诞生了。cadvisor不仅可以轻松收集到…

深度学习中的准确率、精确率(查准率)、召回率(查全率)、F1值、ROC曲线的AUC值,

混淆矩阵 其中关于 TP, TN; FP, FN 的解释&#xff1b; 其中首字母 T&#xff0c;F代表预测的情况&#xff0c;即T代表预测的结果是对的&#xff0c; F代表预测的结果是错误的&#xff1b; 第二个字母代表预测是预测为 正样本&#xff0c;还是负样本&#xff0c; Positve 代表…

西电期末1021.梅森尼数

一.题目 二.分析与思路 用pow函数计算&#xff0c;编写布尔函数&#xff0c;用定义判断&#xff0c;因为不知道有没有时间限制&#xff0c;可能会超时&#xff0c;此时可以用素数筛。 三.代码实现 #include<bits/stdc.h> bool f(int m){for(int i2;i<m-1;i){if(m%i0…