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

news2025/2/2 19:56:47

这里写目录标题

  • 线性表的定义和特征
    • 定义
    • 特征
  • 案例引入
    • 稀疏多项式
    • 链表实现多项式相加
    • 小结
  • 线性表的类型定义(抽象数据类型)
    • 定义格式
    • 基本操作
    • 小结
  • 线性表的顺序表示和实现
    • 实现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.coloradmin.cn/o/762409.html

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

相关文章

你需要跟踪分析产品知识库的哪些关键数据

当你拥有一个产品知识库时,了解如何跟踪和分析关键数据指标是非常重要的。这些数据可以提供有关知识库使用情况、用户行为和满意度的宝贵见解。 在本文中,我们将探讨你需要跟踪的几个重要数据指标,以帮助你优化和改进产品知识库的效果和价值。…

大语言模型评估全解:评估流程、评估方法及常见问题

编者按:随着对大语言模型(LLM)评估领域的深入研究,我们更加清楚地认识到全面理解评估过程中的问题对于有效评估LLM至关重要。 本文探讨了机器学习模型评估中出现的常见问题,并深入研究了LLM对模型评估领域带来的重大挑…

Blazor 自定义可重用基础组件之 Dialog (Bootstrap Modal)

对话框是常用的组件之一,可以提供信息提示,也可以设置表单录入数据等。但是,Bootstrap Modal需要JS互操作,这个不太懂,只能绕过。这里没有一句JS代码,非常好用。 以下是具体代码: &#xfeff…

Drools用户手册翻译——第三章 构建,部署,应用和运行(六)剩余部分

终于是把这一章给看完了,看完也有点懵,需要重新梳理实践一下,最主要是概念有些多,不过还好,多用一用就明白了。 甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方…

SciencePub学术 | 物联网类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 物联网类重点SCIE&EI征稿中!CCF推荐,对国人友好!信息如下,录满为止: 一、期刊概况: 物联网类重点SCIE&EI 【期刊简介】IF:7.0-7.5,JCR1区&#…

算法训练营第四十一天||● 343. 整数拆分 96.不同的二叉搜索树

● 343. 整数拆分 这道有难度,不看题解肯定 想不到用动态规划,看了题解后能大概明白,但还不是很清晰,不太明白递推公式中强调的与dp[i]还要比较一次,也不明白第一次去最大最的那个比较 需要后面继续看 动规五部曲&a…

深度强化学习落地方法论训练篇:PPO、DQN、DDPG、学习率、折扣因子等

为了保证 DRL 算法能够顺利收敛,policy 性能达标并具有实用价值,结果有说服力且能复现,需要算法工作者在训练前、训练中和训练后提供全方位一条龙服务。我记得 GANs 刚火起来的时候,因为训练难度高,有人在 GitHub 上专门开了 repository,总结来自学术界和工业界的最新训练…

麦穗检测Y8S

采用YOLOV8训练,得到PT模型,然后直接转ONNX,使用OPENCV的DNN,不需要其他依赖,支持C/PYTHON 麦穗检测Y8S

CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 代码地址:https://github.com/THUDM/CodeGe 一、简介 CodeGeeX,是一个具有130亿…

<数据结构>NO10.快速排序|递归|非递归|优化

文章目录 快速排序递归实现快速排序hoare版本DigHole版本前后指针版本 非递归实现快速排序算法优化1. 针对有序数组进行优化2. 针对全相等数组进行优化 算法分析时间复杂度空间复杂度 快速排序 快速排序(英语:Quicksort),又称分区…

0基础学习VR全景平台篇 第64篇:高级功能-自定义LOGO和密码访问

一、功能说明 VR视频的高级功能目前有两项,分别是自定义LOGO和密码访问。 二、后台编辑界面 1、自定义LOGO:支持JPG、PNG、GIF格式的图片,大小不超过5M,建议高度不超过500px,设置后显示在VR视频的左上角位置。 2、密…

Vue学习随堂记录

计算属性和监听器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…

MobPush:Android SDK 集成指南

开发工具&#xff1a;Android Studio 集成方式&#xff1a;Gradle在线集成 安卓版本支持&#xff1a;minSdkVersion 19 集成准备 注册账号 使用PushSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可…

《程序是怎样跑起来的》简介

目录 1. 前言2. 主要内容3. 总结 1. 前言 闲暇之余&#xff0c;读了一遍《程序是怎样跑起来的》这本书。颇感欣喜。借此机会分享一下。 本书可以这样定位&#xff1a; 对学生&#xff1a;作为专业课之前的开胃菜&#xff0c;非常合适&#xff0c;尤其是作为《计算机组成原理…

华为OD机试真题 Java 实现【最少数量线段覆盖】【2023Q1 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路四、Java算法源码五、效果展示1、输入2、输出3、说明4、复杂一点5、理性分析一下 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&#xff…

FLStudio21中文版水果软件最新版下载安装图文教程

FL Studio21简称FL&#xff0c;全称&#xff1a;Fruity Loops Studio&#xff0c;因此国人习惯叫它"水果"。目前版本是FL Studio20&#xff0c;它让你的计算机就像是全功能的录音室&#xff0c;大混音盘&#xff0c;非常先进的制作工具&#xff0c;让你的音乐突破想象…

数据结构--图定义与基本术语

数据结构–图定义与基本术语 图的定义 图G由 顶点集 V \color{red}顶点集V 顶点集V和 边集 E \color{red}边集E 边集E组成&#xff0c;记为G (V, E)&#xff0c;其中V(G)表示图G中顶点的有限非空集&#xff1b; E(G)表示图G中顶点之间的关系&#xff08;边&#xff09;集合。…

现代化 Android 开发:Jetpack Compose 最佳实践

作者&#xff1a;古哥E下 如果一直关注 Compose 的发展的话&#xff0c;可以明显感受到 2022 年和 2023 年的 Compose 使用讨论的声音已经完全不一样了, 2022 年还多是观望&#xff0c;2023 年就有很多团队开始采纳 Compose 来进行开发了。不过也有很多同学接触了下 Compose&am…

22.JavaWeb-Minio存储服务器

MinIO是一个开源的对象存储服务器&#xff0c;它兼容Amazon S3 API。它提供了一个简单而强大的存储解决方案&#xff0c;可以用于存储和检索任意大小的文件对象&#xff0c;如图片、视频、文档等。 1.安装与配置Minio https://dl.min.io/server/minio/release/windows-amd64/…

Leetcode 1352: 最后K个数的乘积

题目描述 链接&#xff1a;https://leetcode.cn/problems/product-of-the-last-k-numbers/ 结果 耗时&#xff1a;12min-13min 思路 暴力法&#xff0c;直接从后面读取数组计算。 Java代码 import java.util.ArrayList;class ProductOfNumbers {ArrayList<Integer…