当前位置: 首页 > news >正文

线性表的基本操作及在顺序存储及链式存储的实现

目录

  • 线性表的基本操作:
  • 线性表的在顺序存储上的实现

线性表的基本操作:

一个数据结构的基本操作是指其最核心、最基本的操作。其他较复杂的操作可通过其基本操作来实现。线性表的主要操作如下

    - InitList(&L):初始化表。构造一个空的线性表- Length(L):求表长 。 返回线性表L的长度,即L中数据元素的个数- LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值e的元素- GetElem(L,i):按位查找操作。操作表L中第i个位置的元素的值- ListInsert(&L,i,e):插入操作。在表中的第i个位置的元素的值- LIstDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值- PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值- Empty(L):判空操作。若L为空表,则返回true,负责返回false- DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间

注意:1:基本操作的实现取决于采用哪种存储结构,存储结构不同,算法的实现也不同
2:“&” 表示c++中的引用调用。若存入的变量是指针变量,且在函数体内要对传入的指针进行改变,则会用到指针变量的引用型。在c中采用指针的指针也可达到同样的效果

线性表的在顺序存储上的实现

线性表的顺序存储又称为顺序表。他是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理元素上也相邻。第1个元素存储在线性表的起始位置,第i个位置的存储位置后面紧接存储着的是i+1个元素,称 i 为元素的 αi 在线性表的位序。因此,顺序表的特点是表中元素的逻辑结构与其物理结构

 注意:线性表中元素的位序是从1开始的,而数组中元素的下标是从0开始的

假定线性表的元素类型为ElemType,则线性表的顺序存储类型描述为

#define MaxSize 50 // 定义线性表的最大长度
typedef struct {
ElemType data[MaxSize]; // 顺序表的元素
int length ; // 顺序表的当前长度
}SqList;  // 顺序表的类型定义

以为数组可以是静态分配的,也可以是动态分配的。在静态分配时,由于数组的大小和空间事先已经固定,一旦空间占满,在加入新的数据将会产生溢出,进而导致程序崩溃

而在动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间,从而达到扩充存储数组空间的目的,而不需要为线性表一次性地划分所有空间

注意:动态分配并不是链式存储,它同样属于存储结构,物理结构没有变化,依然是随机存储方式,只是分配的空间大小可以在运行时决定

顺序表最主要的特点是随机访问,即通过首地址和元素序号可在时间O(1)内找到指定的元素,
顺序表的存储密度高,每个节点值存储数据元素
顺序表逻辑上相邻的元素物理上也相邻,所以插入个删除操作需要移动大量元素

相关文章:

线性表的基本操作及在顺序存储及链式存储的实现

目录 线性表的基本操作:线性表的在顺序存储上的实现 线性表的基本操作: 一个数据结构的基本操作是指其最核心、最基本的操作。其他较复杂的操作可通过其基本操作来实现。线性表的主要操作如下 - InitList(&L):初始化表。构造一个空的线性表- Length…...

合宙Air724UG LuatOS-Air script lib API--nvm

nvm Table of Contents nvm nvm.init(defaultCfgFile, burnSave) nvm.set(k, v, r, s) nvm.sett(k, kk, v, r, s) nvm.flush() nvm.get(k) nvm.gett(k, kk) nvm.restore() nvm.remove() nvm 模块功能:参数管理 nvm.init(defaultCfgFile, burnSave) 初始化参数存储管…...

springboot单元测试的详细介绍

当开发一个复杂的应用程序时,确保代码的正确性和稳定性至关重要。在这方面,单元测试是一个不可或缺的工具,它可以帮助开发人员验证代码的各个部分是否按预期工作。Spring Boot提供了丰富的测试支持,使编写和执行单元测试变得更加容…...

Apache Doris 入门教程26:资源管理

为了节省Doris集群内的计算、存储资源,Doris需要引入一些其他外部资源来完成相关的工作,如Spark/GPU用于查询,HDFS/S3用于外部存储,Spark/MapReduce用于ETL, 通过ODBC连接外部存储等,因此我们引入资源管理机制来管理Do…...

【金融量化】Python实现根据收益率计算累计收益率并可视化

1 理论 理财产品(本金100元) 第1天:3% :(13%) ✖ 100 103 第2天:2% :(12%)✖ 以上 103 2.06 第3天:5% : (15%)✖ 以上…...

解读spring中@Value 如何将配置转自定义的bean

实现方式 着急寻求解决方式的猿友先看这块 定义配置转化类 public class UserConverter implements Converter<String, List<User>> {Overridepublic List<User> convert(String config) {if (StringUtils.isEmpty(config)) {return Collections.emptyLis…...

前端开发实习总结参考范文(合集)

▼前端开发实习总结篇一 今天就简单聊聊上面的StrutsSpringHibernate吧。 Struts 代表&#xff1a;表示层;Spring代表&#xff1a;业务逻辑层;Hibernate则代表持久层。他们是目前在Java Web编程开发中用得最多的框架&#xff0c;其实这样区分是为了适应软件开发过程中各个分工…...

♥ vue中$forceUpdate()

♥ vue中$forceUpdate() 1、认识 强制该组件重新渲染 鉴于 Vue 的全自动响应性系统&#xff0c;这个功能应该很少会被用到 $forceUpdate()迫使vue实例重新&#xff08;rander&#xff09;渲染虚拟DOM&#xff0c;注意并不是重新加载组件。 结合vue的生命周期&#xff0c;调用…...

Java一般用于postgis空间数据库通用的增删查改sql命令

目录 1 增加 2 删除 3 查询 4 更新 "public"."JGSQGW_Geo"为某模式下得表 一般postgrel有这样的设计模式 1 增加 #前端绘制出的数据插入 INSERT INTO "public"."JGSQGW_Geo" ( "geom","gridone","gridon…...

【C++类和对象】类有哪些默认成员函数呢?(上)

目录 1. 类的6个默认成员函数 2. 构造函数(*^▽^*) 2.1 概念 2.2 特性 3. 析构函数(*^▽^*) 3.1 概念 3.2 特性 4. 拷贝构造函数(*^▽^*) 4.1 概念 4.2 特性 5. 赋值运算符重载(*^▽^*) 5.1 运算符重载 5.2 赋值运算符重载 ヾ(๑╹◡╹)&#xff89;"人总要为…...

(docker)mysql镜像拉取-创建容器-容器的使用【个人笔记】

【容器的第一次创建】 容器的第一次创建&#xff0c;需要先下载镜像&#xff0c;从 镜像拉取 0、可以搜索镜像的版本 docker search mysql1、先拉取MySQL的镜像&#xff0c;默认拉取最新版&#xff0c;使用下面的命令拉取mysql镜像 docker pull mysql也可以指定mysql的版本…...

【时间格式引发的事故】

时间格式引发的事故 背景实战演示结论 背景 前不久写了一个删除数据接口&#xff0c;条件是根据时间删除时间后面的数据。入参是 时间字符串。后台的时间格式 是 yyyyMMdd。然后当时前端传参数的时候&#xff0c;随意的传了2023-07-31的时间&#xff0c;然后将该表的数据全部删…...

【数据结构】栈及其实现

目录 1.栈的概念及结构 2.栈的实现 2.1栈结构定义 2.2初始化及销毁 2.3插入数据 2.4删除数据 2.5访问栈顶数据 2.6判断是否为空栈 2.7计算栈的大小 3.8访问栈中所有数据 1.栈的概念及结构 栈&#xff1a;栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插…...

Linux命令200例:mount将文件系统挂载到指定目录下(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…...

互联网摸鱼日报(2023-08-11)

互联网摸鱼日报(2023-08-11) 36氪新闻 年景不稳&#xff0c;市场人活成创始人 石油巨头开始疯抢锂矿&#xff0c;美国也开始讲“锂”了&#xff1f; 公司监控员工键盘 49 天&#xff0c;18 年老员工被解雇&#xff1a;因为“打字不够”&#xff1f; 这不是危言耸听&#xf…...

第十五章、【Linux】例行性工作调度

15.1 什么是例行性工作调度 在不考虑硬件与服务器的链接状态下&#xff0c;Linux可以帮助提醒许多任务。Linux调度就是通过crontab与at这两个东西。 15.1.1 Linux工作调度的种类&#xff1a;at,cron 从上面的说明当中&#xff0c;我们可以很清楚的发现两种工作调度的方式&am…...

基于Promise.resolve实现Koa请求队列中间件

本文作者为360奇舞团前端工程师 前言 最近在做一个 AIGC 项目&#xff0c;后端基于 Koa2 实现。其中有一个需求就是调用兄弟业务线服务端 AIGC 能力生成图片。但由于目前兄弟业务线的 AIGC 项目也是处于测试阶段&#xff0c;能够提供的服务器资源有限&#xff0c;当并发请求资源…...

【结构型设计模式】C#设计模式之桥接模式

题目&#xff1a;设计一个桥接模式来实现图形和颜色之间的解耦。 解析&#xff1a; 桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。在这个例子中&#xff0c;抽象部分是图形&#xff08;如圆形、正方形&#xff09;&am…...

【12】Git工具 协同工作平台使用教程 Gitee使用指南 腾讯工蜂使用指南【Gitee】【腾讯工蜂】【Git】

tips&#xff1a;少量的git安装和使用教程&#xff0c;更多讲快速使用上手Gitee和工蜂平台 一、准备工作 1、下载git Git - Downloads (git-scm.com) 找到对应操作系统&#xff0c;对应版本&#xff0c;对应的位数 下载后根据需求自己安装&#xff0c;然后用git --version验…...

zookeeper增加IP白名单-安全设置

简介&#xff1a; zookeeper未授权访问漏洞&#xff0c;处理这个漏洞最简单&#xff0c;常用的应该就是给zookeeper添加用户名、密码验证&#xff0c;如果项目比较急&#xff0c;且代码不支持zookeeper的用户名、密码验证&#xff0c;那采用ip白名单过滤&#xff0c;无疑是最快…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...