数据结构--线性表以及其顺序存储结构

这里写目录标题

  • 线性表的定义和特征
    • 定义
    • 特征
  • 案例引入
    • 稀疏多项式
    • 链表实现多项式相加
    • 小结
  • 线性表的类型定义(抽象数据类型)
    • 定义格式
    • 基本操作
    • 小结
  • 线性表的顺序表示和实现
    • 实现1
      • 顺序存储表示
      • 顺序表中元素存储位置的计算
    • 实现2
      • 顺序表的优点
      • 问题出现
      • 结构体表示形式
    • 补充
      • 数组定义
      • c 语言动态内存分配
      • c++相关知识补充
      • 值传递时 指针类型不改实参值
      • 引用类型传递
        • 格式
    • 线性表基本操作的实现
      • 顺序表示意图
      • 基本操作的实现
        • 查找算法操作的实现
          • 算法设计
          • 算法分析
        • 插入算法的实现
          • 算法设计
          • 算法分析
        • 删除算法的实现
          • 算法设计
          • 算法分析
    • 总结

线性表的定义和特征

定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述

特征

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

案例引入

稀疏多项式

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

链表实现多项式相加

在这里插入图片描述

小结

在这里插入图片描述
接下来要研究:抽象出逻辑结构和基本操作(也就是抽象数据类型的特征),然后实现其存储结构和基本操作

线性表的类型定义(抽象数据类型)

定义格式

在这里插入图片描述

基本操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可用于做条件判断

在这里插入图片描述
注意i的取值范围,插入时可以在1和n+1的位置

在这里插入图片描述
第二个是遍历,具体遍历的操作内容由visited()函数的功能决定

小结

在这里插入图片描述
逻辑结构只是理清逻辑

存储结构,就是常见的高级语言程序

线性表的顺序表示和实现

实现1

顺序存储表示

在这里插入图片描述
在这里插入图片描述
逻辑上相邻,物理上也相邻,地址连续

顺序表中元素存储位置的计算

在这里插入图片描述

实现2

顺序表的优点

在这里插入图片描述

问题出现

在这里插入图片描述
线性表长度可变,但是数组长度固定,出现冲突

结构体表示形式

在这里插入图片描述
定义一个结构体,里面先是一个数组(该数组可以是基本数据类型,也可以是自定义数据类型,图中使用的是自定义元素类型),之后是一个表示当前长度的变量

该方式可以实现数组的长度可变,具体见下面“补充”

案例
在这里插入图片描述
*elem为指向一个数组的指针,是定义数组的另一种形式,数组名即为elem,较为常用这种定义方法

补充知识:

在这里插入图片描述

补充

数组定义

在这里插入图片描述

c 语言动态内存分配

在这里插入图片描述
malloc后面括号里是参数,参数为开辟的字节数,可以用图中的方法计算,maxsize是指元素个数
malloc前面是强制类型转换,当当以结构体时用的是指针定义数组时,在强制类型转换时,要加星号,强转为指针

最后将得到的空间赋值给L.data
(L是自定义数据类型的变量,类似于java类的对象)

c++相关知识补充

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

值传递时 指针类型不改实参值

在这里插入图片描述
这样在函数里只是改变了指针指向的变量,并没有对变量做操作

引用类型传递

格式

在这里插入图片描述
可以理解为j和i公用一个地址区域

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

线性表基本操作的实现

顺序表示意图

在这里插入图片描述

基本操作的实现

在这里插入图片描述
数据结构中, 算法开头status 的意思算法开头status 是一种数据类型的别名,这单词是状态的意思,在教材一般都有说明,如返回 的是状态信息,就用status 声明函数返回类型。而通常用以下的语句说明status:如typedef int status ;这说明其实status和int 型是相同的

typedef int Status;大致上是用来返回本函数是否执行成功,它的几个取值OK,ERROR,OVERFLOW也在同时定义使用的时候把这些东西定义好了

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

查找算法操作的实现

算法设计

在这里插入图片描述

算法分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ASL 就是指平均查找长度,也就是平均访问次数,是时间效率的一种
案例
在这里插入图片描述

插入算法的实现

算法设计

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

算法分析

在这里插入图片描述
可以直接列出来,之后直接找规律,累加除以元素个数n即可

时间复杂度是o(n)
在这里插入图片描述

删除算法的实现

算法设计

在这里插入图片描述

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

算法分析

在这里插入图片描述

总结

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

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

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

相关文章

消息推送(websocket)集群化解决方案

目录 需求分析解决方案实现步骤架构图配置websocket请求地址配置websocket连接前置和连接关闭监听配置websocket处理程序配置redis交换机配置redis订阅监听配置redis发布监听需求分析 及时信息传递:消息推送功能能够确保网站向用户发送及时的重要信息,包括新闻更新、促销活动…

SpringCloud(六)Config配置中心

一、配置中心 官方文档:**https://docs.spring.io/spring-cloud-config/docs/current/reference/html/ 经过前面的学习,我们对于一个分布式应用的技术选型和搭建已经了解得比较多了,但是如果我们的微服务项目需要部署很多个实例&#xff0c…

基于node.js中的serialport模块实现无线传感网上位机功能

半个月前的无线传感网课设上位机的实现遇到了很多困难,特写此文章给有需要的朋友一些帮助,欢迎私信探讨 文章目录 前言一、node.js中的serialport模块二、express框架三、echarts实现拓扑图四、实现下行数据五、成果展示总结 前言 本文所要实现的功能以…

Spring Boot : ORM 框架 JPA 与连接池 Hikari

数据库方面我们选用 Mysql , Spring Boot 提供了直接使用 JDBC 的方式连接数据库,毕竟使用 JDBC 并不是很方便,需要我们自己写更多的代码才能使用,一般而言在 Spring Boot 中我们常用的 ORM 框架有 JPA 和 Mybaties ,本…

MySQL事务与事务的隔离级别

MySQL事务与事务的隔离级别 什么事务?事务的特点(ACID)事务的隔离级别多事务运行的并发问题隔离级别repeatable read(可重复读)之 MVCC(多版本并发控制) 并发机制优化 什么事务? 事务…

为什么要分表和分区?

目录 🥶为什么要分表和分区? 🥶分表 🥶Mysql分表分为垂直切分和水平切分 🥶分表的几种方式: 🥶mysql集群 🥶利用merge存储引擎来实现分表 🥶分区 🥶什么是分…

OpenCv之图像轮廓

目录 一、图像轮廓定义 二、绘制轮廓 三、计算轮廓面积与周长 一、图像轮廓定义 图像轮廓是具有相同颜色或灰度的连续带你的曲线.轮廓在形状分析和物体的检测和识别中很有用 轮廓的作用: 用于图形分析物体的识别与检测 注意点: 为了检测的准确性,需要先对图像…

【Apifox】国产测试工具雄起

在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接…

springboot整合feign实现RPC调用,并通过Hystrix实现降级

目录 一、服务提供者 二、服务消费者 三、测试效果 四、开启Hystrix实现降级功能 feign/openfeign和dubbo是常用的微服务RPC框架,由于feigin内部已经集成ribbon,自带了负载均衡的功能,当有多个同名的服务注册到注册中心时,会根…

【已解决】哪些软件可以解压RAR文件?

RAR文件是我们日常生活及工作中经常用的压缩文件,文件压缩后可以更方便储存或者传输,后续要使用的时候再进行解压。 那RAR文件如何解压呢?哪些软件可以用来解压RAR文件?在这一方面还是小白的小伙伴可以来看看下面的分享。 解压任…

Cadence Allegro PCB设计88问解析(三十一) 之 Allegro 中 打印(Plot)设置

一个学习信号完整性仿真的layout工程师 在PCB进行投板时,往往会打印一下装备层(Assembly),给贴片,用于核对器件的信息等。下面简单介绍Allegro中打印(Plot)设置。 1. 在Allegro的菜单下选择File命令,点击Plot Setup,会…

【自动驾驶汽车量子群粒子过滤器】用于无人驾驶汽车列车定位的量子粒子滤波研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…