数据结构【第3章】——线性表

news2024/9/24 11:21:55

线性表的定义

线性表:零个或多个数据元素的有限序列。

1)线性表是一个序列。即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。

2)线性表强调是有限的,元素个数也是有限的。事实上,在计算机中处理的对象都是有限的,那么无限的数列,只存在于数学的概念中。

在这里插入图片描述
注意:位序是从1开始的

在较复杂的线性表中一个数据元素可以由若干个数据项组成。

线性表的抽象数据类型

在这里插入图片描述

注:
当你传递一个参数给函数的时候,这个参数是否在函数内被改动决定了使用什么参数形式。
1)如果需要被改动,则需要传递指向这个参数的指针。
2)如果不用被改动,可以会直接传递这个参数。

线性表的顺序存储结构

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

线性表的每个数据元素的类型都相同,可以使用C语言的一维数组来实现顺序存储结构

随着数据的插入,线性表的长度开始变大,不过线性表的当前长度不能超过存储容量,即数组的长度。

线性表顺序存储结构代码

#define MAXSIZE 20          /* 存储空间初始分配量 */
typedef int ElemType;       /* ElemType类型根据实际情况而定,这里假设为int */
typedef struct
{
    ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
}SqList;

顺序存储结构需要3个属性:
1:存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。
2:线性表的最大存储容量:数组长度MAXSIZE。
3:线性表的当前长度:length。

注1:区别数组长度和线性表长度
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
线性表的长度<=数组的长度。

注2:线性表的第i个元素是要存储在数组下标为i-1的位置上
在这里插入图片描述
存储器中的每个存储单元都有自己的编号,这个编号称为地址。

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

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

相关文章

百度地图18.8.0首创红绿灯雷达功能,支持全程静音导航、停车推荐

百度地图App最新版本18.8.0已发布&#xff0c;独家推出红绿灯雷达功能&#xff0c;适用于安卓和iOS系统。 根据官方描述说明&#xff0c;行车时手机启用红绿灯雷达&#xff0c;能够自动检测红绿灯&#xff0c;值得一提的是无需输入目的地。同时&#xff0c;依靠北斗高精定位技术…

如何用python做自然语言处理

如何用python做自然语言处理 使用Python进行自然语言处理&#xff08;NLP&#xff09;是非常常见和强大的。以下是一些基本步骤&#xff1a; 安装所需的库&#xff1a; 首先&#xff0c;您需要安装一些用于自然语言处理的Python库&#xff0c;如NLTK&#xff08;自然语言工具包…

AMEYA360:尼得科科宝旋转型DIP开关系列汇总

旋转型DIP开关 S-4000 电路&#xff1a;BCD(十进制) 代码格式&#xff1a;实码 安装类型&#xff1a;表面贴装 调整位置&#xff1a;顶部 可水洗&#xff1a;无 端子类型&#xff1a;J 引线, 鸥翼型 旋转型DIP开关 SA-7000 电路&#xff1a;BCD(十进制), BCH(十六进制) 代码格式…

Qt5.14.2的安装教程

Qt5.14.2的安装教程 qt creator是qt桌面开发必备的软件&#xff0c;最近重新下载了一份&#xff0c;本文介绍一下Qt的安装过程。 找安装包 本文找到安装包&#xff0c;网址链接 qt5.14.2安装包官网&#xff1a; https://download.qt.io/archive/qt/5.14/5.14.2/ 这个官网下载速…

利用openTCS实现车辆调度系统(一)系统介绍

系统介绍 openTCS简介 官方的回答&#xff1a; openTCS&#xff08;开放式运输控制系统的缩写&#xff09;是一种免费的控制系统软件&#xff0c;用于协调自动导引车&#xff08;AGV&#xff09;和移动机器人车队&#xff0c;例如在生产工厂中。 通常应该可以控制任何具有通信…

Vue.js2+Cesium 五、WMS 服务加载,控制自图层显隐

Vue.js2Cesium 五、WMS 服务加载&#xff0c;控制自图层显隐 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><div class"layer_container"><button id"btn">清除</button&g…

快速增加Shopee,lazada店铺销量的秘籍大揭秘

在竞争激烈的电商市场中&#xff0c;如何快速提高Shopee。lazada店铺的销量一直是卖家们关注的焦点。 优化产品信息&#xff1a;在Shopee平台上&#xff0c;完整填写产品标题、描述和关键词等信息非常重要。确保您的产品信息准确、清晰&#xff0c;并包含与目标买家搜索相关的…

Jest和Mocha两者之间有哪些区别?

什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软件中单个功能组件进行测试的一种软件测试方式&#xff0c;其目的是确保代码中的每一个基本单元都能正常运行。因此&#xff0c;开发人员在应用程序开发的整个过程&#xff08;即代码编写过程&#xff09;中都需要进行…

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页&#xff1b;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程&#xff0c;引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用&#xff08;gitee版&#xff09; 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇

1.简介 众所周知&#xff0c;假如设备是android 7.0的系统同时应用设置targetSdkVersion > 24的话&#xff0c;那么应用默认是不信任安装的Fiddler用户证书的&#xff0c;所以你就没法抓到应用发起的https请求&#xff0c;然后你在Fiddler就会看到一堆200 HTTP Tunnel to x…

SpringBoot3---核心特性---1、快速入门

星光下的赶路人star的个人主页 年轻人仍然所见有极限&#xff0c;又迷失在太多讯息中–讯息不等于眼界 文章目录 1、简介1.1 前置知识1.2 环境要求1.3 SpringBoot是什么 2、快速体验2.1 开发流程2.2 特性小结2.3 Spring Initializr 3、应用分析3.1 依赖管理机制3.2 自动配置机制…

工作日志怎么写?聪明灵犀能帮你撰写

工作日志怎么写&#xff1f;工作日志是每个职场人士都需要编写的重要文档之一&#xff0c;它记录了我们在工作中所做的事情、遇到的问题以及解决方法等重要信息。然而&#xff0c;写工作日志并不是一件容易的事情&#xff0c;特别是对于那些不擅长记录的人来说。不过&#xff0…

go 语言实战入门案例之实现Socks5

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/backend-tutorial 】或者公众号【AIShareLab】回复 go 也可获取。 文章目录 实现 Socks 5 代理介绍原理TCP echo serverauth请求阶段完整代码 学习路线推荐 实现 Socks 5 代理 介绍 socks5 协议它虽…

2023 8-2 ~ 8-3

2181 合并0之间的节点 思路挺简单 就是注意一下指针不要制空 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNod…

【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

业务场景&#xff1a;该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 一、打开我们的服务器连接工具 连上服务器后,在任意位置都可以执行:crontab -e 如果没有进入编辑cron任务模式 根据提示查看…

瑞吉外卖实战-笔记

软件开发的流程 角色分工 软件环境 开发环境的搭建 数据库环境 maven环境 1.创建完成后&#xff0c;需要检查一下编码、maven仓库、jdk等 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</a…

Java 监听Mysql binlog

使用 mysql-binlog-connector-java 1. mysql-binlog-connector-java 官网 2. Java代码中&#xff0c;如何监控Mysql的binlog&#xff1f; 前置条件 1. mysql服务器表结构 CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 C…

meedu二次开发:企业内部使用 必须登录之后才能查看里面内容

meedu二次开发&#xff1a;修改成企业内部培训系统功能 用户必须登录之后才能查看里面课程内容

20天学rust(一)和rust say hi

关注我&#xff0c;学习Rust不迷路 工欲善其事&#xff0c;必先利其器。第一节我们先来配置rust需要的环境和安装趁手的工具&#xff0c;然后写一个简单的小程序。 安装 Rust环境 Rust 官方有提供一个叫做 rustup 的工具&#xff0c;专门用于 rust 版本的管理&#xff0c;网…