数据结构与算法-D2D3线性表之顺序表
线性表:包含若干数据元素的一个线性序列,特征如下:
1)对非空表,a0是表头,无前驱;
2)an-1是表尾,无后继;
3)其他元素仅且仅有一个前驱,一个后继

线性表L可以用二元组表示:
L=(D,R)
即线性表L包含数据元素集合D和关系集合R
顺序存储特点:
1)逻辑上相邻的元素,其存储位置也相邻
2)对数据元素ai的存取为随机存取或按位置存取
3)存储密度高
存储密度=(数据元素所占空间)/(整个数据结构所占用空间)
顺序存储缺点:
1)数据插入和删除等运算的时间复杂度较差
顺序存储结构的表示:
通常使用数组

上图为顺序表的通常定义,typedef int data_t中data_t是表中元素,使用typedef是为了能够使得data_t可以更换数据类型;下面的typedef struct是顺序表,其中data_t data[N]是数据,int last是最后一个元素下标。
线性表的基本运算
1)建立一个空表:list_creat(L)
2)置空表:list_clear(L)
3)判断表是否为空:list_empty(L)。若表为空,返回值为1,否则返回0
4)求表长:liength(L)
5)取表中某个元素:GetList(L,i),即ai。要求0≤i≤length(L)-1
6)定位运算:locate(L,x)。确定元素x在表L中的位置(或序号)

7)插入 :
Insert(L,x,i)。将元素x插入到表L中第i个元素ai之气,且表长+1
8)删除:
Delete(L,i)。删除表L中i个元素ai,且表长减1,要求0≤i≤n-1。



线性表的顺序存储缺点:

顺序表实现
sqlist.h sqlist.c test.c
sqlist.h:数据结构定义、运算
sqlist.c:运算实现
test.c:整个实现
list_create
1)申请内存
2)成员初始化
3)返回线性表地址
给大片内存赋同样的值
第1个参数:内存首地址
第2个参数:所要赋的值
第3个参数:所要赋值的字节数

list_clear
成功返回0,失败返回1

list_empty
检查链表是否为空,1为空,0为非空
last=0表示有一个数据,定义last=-1时是空表

list_length
last表示最后一个元素的下标,lat+1就是长度了

list_insert
1、验证表是否满了
2、插入的位置区间范围为[0, last+1]
3、中间位置插入要涉及空间移动(从后往前移动)
4、存新值,last+1

list_show

list_delete
将指定位置元素删除
首先不是空表
1、检查位置pos在[0,last]

2、移动元素
3、更新last

list_merge
将两个线性表合并
1、La = La 并Lb
2、bi是否在La中
3、不在,插入

list_locate
判断元素是否在线性表中

总:

list_purge
删除线性表当中的重复元素

注:一种简便书写struct方法

相关文章:
数据结构与算法-D2D3线性表之顺序表
线性表:包含若干数据元素的一个线性序列,特征如下: 1)对非空表,a0是表头,无前驱; 2)an-1是表尾,无后继; 3)其他元素仅且仅有一个前驱,…...
01_W5500简介
目录 W5500简介: 芯片特点: 全硬件TCPIP协议栈: 引脚分布: W5500简介: W5500是一款高性价比的以太网芯片,其全球独一无二的全硬件TCPIP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用ÿ…...
异常 Exception 练习题 (未完成)
异常 Exception 练习题 try-catch异常处理1234 异常1(没有自己写)234 try-catch异常处理 1 class Exception01 {public static int method() {try {String[] names new String[3];//String[]数组if (names[1].equals("tom")) {//NullPointe…...
Linux系统编程:并发与信号总结
并发 并发是指两个或多个同时独立进行的活动。在计算机系统中,并发指的是同一个系统中多个独立活动同时进行,而非依次进行。 并发在计算机系统中的表现: 一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是…...
Jmeter 接口-加密信息发送(一百九十九)
方式1:使用函数助手 比如MD5加密方式: 如图,需要对${user}进行MD5加密 1、打开函数助手,找到MD5,输入需要加密的值 2、将${__MD5(${user},)}放到请求中 3、查看请求,请求成功 方式2:导入jar包…...
微信小程序nodejs+vue+uniapp视力保养眼镜店连锁预约系统
作为一个视力保养连锁预约的网络系统,数据流量是非常大的,所以系统的设计必须满足使用方便,操作灵活的要求。所以在设计视力保养连锁预约系统应达到以下目标: (1)界面要美观友好,检索要快捷简易…...
掌握Vue侦听器(watch)的应用
文章目录 🍁watch 的优缺点🍂Watch 优点🍂Watch 缺点 🍁watch 的用法🍂对象式 watch🍂函数式 watch 🍁代码示例🍂监听基本数据类型🍂监听复杂数据类型(Object…...
SAP-PP:PP顾问管理系统的相关建议
本博客将探讨生产计划领域的控制要点。这将有助于减少仓库库存不准确情况,因为库存不准确会导致实物库存、发货、成本核算和计划方面出现许多效率低下的问题。 在物料主数据关键字段中,必须配置计划交货时间、GR处理时间、内部生产时间、计划交货时间&a…...
Unity资源路径与读取
Unity资源路径有: 1、StreamingAssets:只读,一般用于存放应用程序运行时需要加载的资源文件,可以通过Application.streamingAssetsPath来获取。 2、PersistentDataPath:可读写,一般用于存放应用程序运行时…...
“大+小模型”赋能油气行业高质量发展
近日,中国石油石化科技创新大会暨新技术成果展在北京盛大举行,九章云极DataCanvas公司携油气行业一站式AI综合解决方案重磅亮相,充分展示了公司助推油气行业实现AI规模化应用深厚的AI技术实力和领先的AI应用水准,赢得了行业专家和…...
【win32_004】字符串处理函数
StringCbPrintf 函数 (strsafe.h):格式化字符串 STRSAFEAPI StringCbPrintf([out] STRSAFE_LPSTR pszDest,//目的缓冲区 LPSTR指针或者数组[in] size_t cbDest,//目的缓冲区大小[in] STRSAFE_LPCSTR pszFormat,//格式 例如: TEXT("%d&…...
如果不小心修改了按钮的名字并且忘记了原名字
出现上述情况,可以右边点击转到代码,注释掉问题行,此页的设计界面就恢复了。...
opencv阈值处理
阈值处理 二值化 自适应阈值 OTSU二值化...
html之JS
1、JS的引入 <!-- 内嵌 --><!-- <script>alert(4)</script> --><!-- 外引 --><!-- 内嵌和外引同时有的时候,内嵌被覆盖 --><script src"js/index.js" defer></script>//defer 延迟执行 2、js的变量使用…...
SQL Server的安装和首个库的创建
一、熟悉SQL Server的安装环境; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面: 一步步按照提示往下走即可,把SQL Server 2022安装完成后再…...
STM32下载程序的五种方法
刚开始学习 STM32 的时候,很多小伙伴满怀热情买好了各种设备,但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片~ STM32 的烧录方式多样且灵活,可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将…...
基于springboot + vue大学生竞赛管理系统
qq(2829419543)获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:springboot 前端:采用vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件…...
【详解】Spark数据倾斜问题由基础到深入详解-完美理解-费元星
数据倾斜定义:顾名思义,就是大量相似或相同数据聚集在一个块的节点里,导致计算和资源分配不均导致的计算缓慢(长尾)问题。 数据倾斜原因: count(distinct field) group by NULL 空值 Shuffle (概率最…...
xss漏洞后端进行html消毒
import org.jsoup.Jsoup;public static String sanitizeHtml(String input) {// 使用 Jsoup 消毒 HTMLreturn Jsoup.clean(input, Safelist.relaxed());}public static void main(String[] args) {String userInput "<p><script>alert(1)</script>Safe…...
[论文精读]利用大语言模型对扩散模型进行自我修正
本博客是一篇最新论文的精读,论文为UC伯克利大学相关研究者新近(2023.11.27)在arxiv上上传的《Self-correcting LLM-controlled Diffusion Models》 。 内容提要: 现有的基于扩散的文本到图像生成模型在生成与复杂提示精确对齐的图像时仍然存在困难,尤其是需要数值和…...
Swarmocracy:基于蜂群智能的分布式组织决策模拟实践
1. 项目概述:当开源项目遇上“蜂群民主”最近在开源社区里闲逛,发现一个挺有意思的项目,叫“Swarmocracy”。光看名字,就能嗅到一股混合了技术极客与组织社会学的味道——“Swarm”(蜂群)加上“-cracy”&am…...
Midjourney V6 acrylic paint提示词工程:从模糊描述到精准输出的12个专业级Prompt模板(含色彩层厚/笔触硬度/画布纹理三重控制)
更多请点击: https://intelliparadigm.com 第一章:Midjourney V6丙烯画风格的核心演进与底层渲染机制 Midjourney V6 对丙烯画(Acrylic Painting)风格的建模已脱离早期依赖纹理叠加与后处理滤镜的粗粒度模拟,转向基于…...
Spring Boot项目整合阿里云OSS上传,如何避免Nginx代理下的405坑?
Spring Boot整合阿里云OSS上传的Nginx避坑指南:彻底解决405错误 在前后端分离架构中,文件上传功能几乎是每个Web应用的标配。当我们将Spring Boot与阿里云OSS结合使用时,Nginx作为反向代理常常会带来一个棘手的405 Method Not Allowed错误。这…...
终极歌词获取方案:163MusicLyrics让你轻松获取网易云和QQ音乐LRC歌词
终极歌词获取方案:163MusicLyrics让你轻松获取网易云和QQ音乐LRC歌词 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为寻找准确歌词而烦恼吗?…...
AI 绘图新进展:GPTimage2 系列(含 4K 超清版)全量上线及直连 API 体验指南
随着 AIGC(人工智能生成内容)技术的快速迭代,近期备受关注的 GPTimage2 系列模型已全量上线。作为 AI 绘图领域的新晋生力军,GPTimage2 在图像生成质量、细节刻画上展现出了极强的竞争力。特别值得一提的是,本次不仅上…...
时间序列预测总翻车?试试用Python实现嵌套交叉验证来守住‘未来’数据
时间序列预测中的嵌套交叉验证:用Python守住数据的时间壁垒 当你在预测下周的销售额、下个月的电力负荷或明天的股价时,最可怕的不是模型不够复杂,而是它偷偷"作弊"了——通过窥探未来的数据来假装自己很聪明。这种时间序列预测中的…...
STM32 LWIP服务器内存泄漏踩坑实录:我是如何实现多客户端连接并稳定运行72小时的
STM32 LWIP服务器内存泄漏排查与多客户端连接优化实战 在嵌入式网络应用中,STM32结合LWIP协议栈构建TCP服务器是常见方案。但当系统需要支持多客户端并发连接并长期运行时,内存管理问题往往成为稳定性的最大威胁。本文将分享一个真实案例:如何…...
SAS协议深度解析:数据中心存储的基石与未来演进
1. 项目概述:SAS协议的现状与未来如果你在数据中心存储领域待过几年,肯定听过一种论调:“SAS(Serial Attached SCSI)快不行了,NVMe over PCIe才是未来。” 这话听起来挺有道理,毕竟NVMe SSD那动…...
如何一键清理Windows系统:Win11Debloat终极优化指南
如何一键清理Windows系统:Win11Debloat终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cust…...
别再死记硬背了!用‘知识卡片+思维导图’法搞定离散数学里的命题、谓词与代数系统
知识卡片与思维导图:离散数学的高效学习革命 离散数学常被学生称为"天书"——命题逻辑的符号迷宫、谓词逻辑的量化陷阱、代数系统的抽象森林,每个概念都像一座孤岛。传统线性笔记法让这些知识点在脑海中如散沙般难以聚合,这正是大多…...
