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

数据结构与算法-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协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用&#xff…...

异常 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> --><!-- 外引 --><!-- 内嵌和外引同时有的时候&#xff0c;内嵌被覆盖 --><script src"js/index.js" defer></script>//defer 延迟执行 2、js的变量使用…...

SQL Server的安装和首个库的创建

一、熟悉SQL Server的安装环境&#xff1b; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面&#xff1a; 一步步按照提示往下走即可&#xff0c;把SQL Server 2022安装完成后再…...

STM32下载程序的五种方法

刚开始学习 STM32 的时候&#xff0c;很多小伙伴满怀热情买好了各种设备&#xff0c;但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片&#xff5e; STM32 的烧录方式多样且灵活&#xff0c;可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将…...

基于springboot + vue大学生竞赛管理系统

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…...

【详解】Spark数据倾斜问题由基础到深入详解-完美理解-费元星

数据倾斜定义&#xff1a;顾名思义&#xff0c;就是大量相似或相同数据聚集在一个块的节点里&#xff0c;导致计算和资源分配不均导致的计算缓慢&#xff08;长尾&#xff09;问题。 数据倾斜原因&#xff1a; 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…...

[论文精读]利用大语言模型对扩散模型进行自我修正

本博客是一篇最新论文的精读&#xff0c;论文为UC伯克利大学相关研究者新近(2023.11.27)在arxiv上上传的《Self-correcting LLM-controlled Diffusion Models》 。 内容提要: 现有的基于扩散的文本到图像生成模型在生成与复杂提示精确对齐的图像时仍然存在困难,尤其是需要数值和…...

CTF特训日记day(4-6)

来复现一下2022QWB决赛的RDP题目 这两天腰疼去了趟医院 题目要求我们攻击XRDP程序&#xff0c;从而达到本地提权的效果。 首先观察XRDP程序的版本信息 rootRDP:/home/rdp/Desktop# xrdp-sesman -version xrdp-sesman 0.9.18The xrdp session managerCopyright (C) 2004-2020…...

【深度学习笔记】09 权重衰减

09 权重衰减 范数和权重衰减利用高维线性回归实现权重衰减初始化模型参数定义 L 2 L_2 L2​范数惩罚定义训练代码实现忽略正则化直接训练使用权重衰减 权重衰减的简洁实现 范数和权重衰减 在训练参数化机器学习模型时&#xff0c;权重衰减&#xff08;decay weight&#xff09…...

三大兼容 | 人大金仓兼容+优化MySQL用户变量特性

目前&#xff0c;KingbaseES对MySQL的兼容性&#xff0c;已从功能兼容阶段过渡到强性能兼容、生态全面兼容阶段&#xff0c;针对客户常常遇到的用户变量问题&#xff0c;KingbaseES在兼容MySQL用户变量功能的基础上&#xff0c;优化了MySQL用户变量的一些原生问题&#xff0c;使…...

Git介绍与安装使用

目录 1.Git初识 1.1提出问题 1.2如何解决--版本控制器 1.3注意事项 2.Git安装 2.1Linux-centos安装 2.2Linux-ubuntu安装 2.3Windows安装 3.Git基本操作 3.1创建Git本地仓库 3.2配置Git 4.认识⼯作区、暂存区、版本库 1.Git初识 1.1提出问题 不知道你工作或学习时…...

理解DuLinkList L中的“”引用符号

在C中&#xff0c;DuLinkList &L 这种形式的参数表示 L 是一个 DuLinkList 类型的引用。这里的 & 符号表示引用。 引用是C的一个特性&#xff0c;它提供了一种方式来访问已存在的变量的别名。当你对引用进行操作时&#xff0c;实际上是在操作它所引用的变量。如果你在…...

前端并发多个请求并失败重发

const MAX_RETRIES 3;// 模拟请求 function makeRequest(url) {return new Promise((resolve, reject) > {setTimeout(() > {Math.random() < 0.75 ? resolve(${url} 成功) : reject(${url} 失败); // 随机决定请求是否成功}, Math.random() * 2000); // 随机延时执…...

【Qt开发流程】之对象模型2:属性系统

描述 Qt提供了一个复杂的属性系统&#xff0c;类似于一些编译器供应商提供的属性系统。然而&#xff0c;作为一个独立于编译器和平台的库&#xff0c;Qt不依赖于非标准的编译器特性&#xff0c;如__property或[property]。 Qt解决方案适用于Qt支持的所有平台上的任何标准c编译…...

PHP之curl详细讲解

cURL&#xff08;全称为Client for URLs&#xff09;是一个功能强大的开源库&#xff0c;用于在多种协议上进行数据传输、发送HTTP请求和获取响应。它支持多种协议&#xff0c;包括HTTP、HTTPS、FTP、SMTP等&#xff0c;并且能够与各种服务器进行通信。 cURL库可以通过命令行工…...

R语言30分钟上手

文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…...

上下拉电阻会增强驱动能力吗?

最近看到一个关于上下拉电阻的问题&#xff0c;发现不少人认为上下拉电阻能够增强驱动能力。随后跟几个朋友讨论了一下&#xff0c;大家一致认为不存在上下拉电阻增强驱动能力这回事&#xff0c;因为除了OC输出这类特殊结构外&#xff0c;上下拉电阻就是负载&#xff0c;只会减…...

做网站好的品牌/友情连接

作为一款出色的文件和文件夹比较工具&#xff0c;Beyond Compare受到越来越多不同领域不同职业的人士的喜爱&#xff0c;最新Beyond Compare 4中文版系统支持&#xff1a;Windows、Linux、Mac OSX。软件拥有强大的比较功能&#xff0c;其中在执行版本比较操作时&#xff0c;可以…...

广东品牌网站建设服务机构/上海专业的网络推广

初始学习如下&#xff1a; http://rdf4j.org/sesame/tutorials/getting-started.docbook?view 转载于:https://www.cnblogs.com/aze-003/p/4078492.html...

wordpress后台密码默认/怎样建立一个网络销售平台

图像阈值分割-全局阈值分割 1. 全局阈值分割 在Halcon中&#xff0c;算子threshold、fast_threshold实现全局阈值分割&#xff0c;其原型如下&#xff1a; threshold(Image : Region : MinGray, MaxGray : ) 参数Image:输入图像Region&#xff1a;输出分割区域MinGray&…...

济南外贸网站建设公司排名/在线识图

计算机网络课程设计某大学校园网设计_1摘要当今世界&#xff0c;各种先进的科学技术飞速发展&#xff0c;给人们的生活带来了深远的影响&#xff0c;它极大地改善着我们的生活方式。在以计算机技术为代表的信息科技的发展更是日新月异&#xff0c;从各个方面影响和改变着我们的…...

做合成照片的国外网站/上海关键词排名手机优化软件

...

可以做公司宣传的网站有哪些/互联网营销模式有哪些

1 概述 在平时开发中&#xff0c;git可以说是我们最不陌生的工具了。而且在提交线上代码或者是将自己功能分支上的代码给cherry-pick到预发分支上时&#xff0c;如果只提交了一个点那么直接cherry-pick就可以了&#xff0c;但是提交了很多点时&#xff0c;一个一个的cherry-pic…...