数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表

news2024/11/19 14:28:26

一、线性表抽象数据类型

线性表的定义

定义:零个或多个数据元素的有限序列

线性表的特点:

1.它是一个序列

数据元素之间是有序的

数据元素之间是一对一的关系

2.有限性

线性表的数据元素个数是有限的

注意:零个数据元素的有限序列又被称为空表

线性表常见的操作

1.创建和初始化、2.查找、3.删除、4.插入、5.清空

抽象数据类型定义:

ADT SequenceList
Data
    1.线性表数据元素是一个集合{a_1,a_2,a_3,...,a_n};//数据元素的类型是DataType

    2.除了第一个元素外,每个元素有且只有一个直接的前驱元素

    3.除了最后一个元素外,每个元素有且只有一个直接地后继元素

    4.每个数据元素之间的关系是一对一的关系

Operation

        1.初始化线性表:InitList(*List,int data)        创建一个空的线性表

        2.插入:InsertElement(*List,index,elem)        在线性表List的index下标处插入元素elem

        3.删除:DeleteElement(*List,index,*elem)        删除线性表List中第i个元素,并返回删除元素的指针e

        4.查找:GetElem(*List,index,*elem)        返回线性表中第i个位置的数据元素给e

        5.求长度:GetLength(*List)        返回线性表中的元素个数

        6.判空:IsEmpty(*List)        若线性表为空,返回TRUE,否则返回FALSE

endADT

        7.清空:ClearList(*List)        将线性表清空

 二、小议顺序表

线性表的顺序存储示意图如下:

线性表的顺序存储结构,值得是用一段地址连续的存储单元依次存储线性表的数据元素

线性表的定义

position 元素的位置 从1开始        index 元素的下标 从0开始

1.我们需要定义线性表的最大存储空间

#define MAX_SIZE 255

 2.线性表里需要有统一类型的元素集合

typedef ElemType;
typedef struct{
    int id;
    char name;
}ElenmType;

3.定义顺序表的结构

typedef struct{
    ElementType datas[MAX_SIZE];
    int length;
};

 4.描述线性表的顺序存储结构:

        存储空间的起始位置:数组datas的存储位置

        线性表的最大存储容量:数组长度MAX_SIZE

        线性表的当前长度:length

线性表中顺序表地址的计算方式

地址从0到n-1

*(datas + 0);
*(datas + 1);
......
*(*datas+n-1);

 

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

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

相关文章

NewStarCTF2023week4-依旧是空白(snow隐写)

打开附件的空白图片,CRC报错,很可能是高度被修改 爆出图片正确的宽度和高度并修复 打开看到密码 password: s00_b4by_f0r_y0u 另一个文件是空白的txt文档,大致看了一下像是不可见字符,尝试 white_space,发现不是&…

Uservue 中 keep-alive 组件的作用

目录 前言 用法 代码 理解 keep-alive 是 Vue.js 中一个内置的组件,它能够将不活动的组件实例保存在内存中,防止其被销毁,以便在后续需要时能够快速重新渲染。这个功能在一些需要频繁切换但不希望每次都重新渲染的场景中非常有用&#xf…

详解预处理(2)

目录 #undef 命令行定义 条件编译 NO1. NO2.多个分支的条件编译 NO3.判断是否被定义 NO4.嵌套指令 文件包含 头文件被包含的方式 本地文件包含 库文件包含 嵌套文件包含 其他预处理指令 今天接着继续讲解预处理的点,前面已经深入学习了#define。 #unde…

基于Springboot 游戏娱乐信息平台-计算机毕设 附源码 04691

Springboot 游戏娱乐信息平台 目 录 摘要 1 绪论 1.1研究内容 1.2国内外研究慨况 1.3研究方法 1.4论文结构与章节安排 2 游戏娱乐信息平台系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性…

EvilAppleJuice(邪恶苹果汁)-ESP32C3项目(iphone疯狂弹窗)

原作者作品页: ckcr4lyf/EvilAppleJuice-ESP32: Spam Apple Proximity Messages via an ESP32 (github.com) 代码优化一下,增加呼吸灯效果方便知道设备运行情况,我是用arduino烧录 仅作交流学习使用,请勿在公开场合滥用 运行效果…

黑豹程序员-Python入门-for循环

文章目录 1、for循环语法2、巩固案例:长安三万里你记得的三位诗人?实现步骤:第一步:新建一个列表,存储诗人姓名第二步:列表用[]表示,元素之间用逗号,分隔第三步:用列表[索引]的方法将…

莫名其妙el-table不显示问题

完全复制element-ui中table代码,发现表格仍然不显示,看别人都说让降低版本,可我不想降低啊,不然其他组件有可能用不了,后来发现可以通过配置vite.config.js alias: {: path.resolve(__dirname, src),vue: vue/dist/vue…

【Docker】Python Flask + Redis 练习

一、构建flask镜像 1.准备文件 创建app.py,内容如下 from flask import Flask from redis import Redis app Flask(__name__) redis Redis(hostos.environ.get(REDIS_HOST,127.0.0.1),port6379)app.route(/) def hello():redis.incr(hits)return f"Hello Container W…

nexus5x 刷机root

刷机 进入fastboot模式 adb reboot bootloader 或者开机 音量减 解锁bootloader fastboot oem unlock 刷入rom包 下载 Nexus 和 Pixel 设备的出厂映像 | Google Play services | Google for Developers 选一个合适的ROM包下载到电脑的某个位置,然后unzip解…

国家网信办发布第十三批境内区块链信息服务备案编号

2019年2月15日《区块链信息服务管理规定》(以下简称《管理规定》)正式实施以来,国家互联网信息办公室依法依规组织开展备案审核工作,已发布2批次共506个境内区块链信息服务名称及备案编号,近日正式发布第三批共224个境…

剪映怎么合并两个视频?几个步骤轻松搞定!

合并两个视频可以方便我们管理、节省存储空间、提高处理效率、满足特定要求或实现特定效果等目的。而剪映作为我们常用的视频处理软件,如何利用其合并两个视频呢?一起来看看吧~ 方法一:使用剪映专业版 1、运行剪映,主…

关于maven项目中依赖无法下载的解决方案

场景描述 在下载selenium的依赖时,虽然相依的jar包已经存在,但是在idea中依然报红 解决方案 在jar无法正常下载时可以尝试使用——找到下载的文件夹,删除整个文件夹后重新通过链接下载 过程演示 C:\Users\lenovo\.m2 所有依赖的jar包都在这…

errno变量和显示错误信息

一、errno Linux很多函数发生错误,只会返回-1。所以,我们只知道函数发生了错误,却不知道具体发生了什么错误。 因此Linux 系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型。 发生错误时,对…

CTF-Crypto学习记录-第三天 MD5加密算法(信息摘要算法)“ “

文章目录 0x1 MD5 基本介绍0x2 MD5 加密特点0x3 MD5 加密原理步骤0x01 对明文数据进行信息填充0x02 设置初始变量0x03 加密运算过程加密运算流程图&#xff1a;四个非线性函数&#xff1a;Mj表示消息的第j个子分组&#xff08;从0到15&#xff09;&#xff0c;<<&#xf…

Python web开发中的单元测试自动化技巧!

Python作为一种广泛使用的编程语言&#xff0c;在web开发中也扮演着重要的角色。在进行web开发时&#xff0c;单元测试是一个不可或缺的环节。单元测试可以确保代码的正确性&#xff0c;并且能够在开发过程中快速发现问题&#xff0c;有助于提高代码质量和开发效率。 在Python…

非计算机小白成功转型Python教学分析师,月薪2W后,我的学习经验总结!

最近1年的主要学习时间&#xff0c;都投资到了python据分析和数据挖掘上面来了&#xff0c;虽然经验并不是十分丰富&#xff0c;但希望也能把自己的经验分享下&#xff0c;最近也好多朋友给我留言&#xff0c;和我聊天&#xff0c;问我python该如何学习&#xff0c;才能少走弯路…

桉木红面模板批发915*1830mm规格建筑木胶板

我们很自豪地介绍我们的产品&#xff1a;桉木红面建筑模板。作为一家专业的建筑木胶板生产批发商&#xff0c;我们提供高质量的915*1830*15mm规格的桉木红面板&#xff0c;为您的建筑项目提供卓越的解决方案。 桉木红面板是由优质的桉木原料制成&#xff0c;经过精细的加工和处…

论文分享——北邮:基于学习解纠缠因果子结构的图神经网络去偏

作者 &#xff1a;范少华 研究方向 &#xff1a;图神经网络 论文标题 &#xff1a;基于学习解纠缠因果子结构的图神经网络去偏 论文链接 &#xff1a;https://arxiv.org/pdf/2209.14107.pdf        https://doi.org/10.48550/arXiv.2209.14107 大多数图神经网络(GNNs)通…

基于YOLOv8模型的烟雾目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的烟雾目标检测系统可用于日常生活中检测与定位烟雾目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

【面试题】面试官:如何判断两个数组的内容是否相等

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 题目 给定两个数组&#xff0c;判断两数组内容是否相等。 不使用排序不考虑元素位置 例&#xff1a; [1, 2, 3]…