数据结构之顺顺顺——顺序表

news2024/10/5 14:16:40

1.浅谈数据结构

     相信我们对数据结构都不陌生,我们之前学过的数组就是最基础的数据结构,它大概就长这样:

数组

       而作为最简单的数据结构,数组只能帮助我们实现储存数据这一个功能,随着学习的深入,和问题的日渐复杂,最基础的已经不能完全满足我们复杂的算法实现,于是我们需要学习更进阶的数据结构来实现我们对数据的增删查改等一系列操作。 

       我们回顾一下数据结构的定义:它是计算机中存储、组织和管理数据的方式。它定义了数据的表示方式、操作和存储方式,以及数据之间的关系。

       说人话就是:1.能够存储数据(如顺序表,链表等)

                             2.存储的数据可以方便的查找出来

       顺序表就是这样一种数据结构,比数组更复杂,可以更好满足我们的需求。但事实上顺序表的底层还是数组,它是对数组的封装,实现了常用的增删查找的接口。

2.顺序表

2.1顺序表的定义

        顺序表(Sequential List)是线性表的一种,它是将数据元素按照一定的顺序依次存放在一段连续的存储单元中,物理结构不一定是线性的,但逻辑结构一定是线性的。

补充一点芝士:

线性表(linear list )是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

 2.2顺序表的分类

1)静态顺序表

概念:使用定长数组储存元素

静态顺序表缺陷:给小了,空间不够用;给大了,空间浪费。

于是就有了下面的动态表。

2)动态顺序表 

2.3动态顺序表的实现 

//动态顺序表
typedef struct SeqList
{
	SLDataType* arr;
	int size; //有效数据个数
	int capacity; //空间大小
}SL;

//typedef struct SeqList SL;

//顺序表初始化
void SLInit(SL* ps);
//顺序表的销毁
void SLDestroy(SL* ps);
void SLPrint(SL s);

//头部插入删除 / 尾部插入删除
void SLPushBack(SL* ps, SLDataType x);
void SLPushFront(SL* ps, SLDataType x);

void SLPopBack(SL* ps);
void SLPopFront(SL* ps);

//指定位置之前插入/删除/查找数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);
int SLFind(SL* ps, SLDataType x);

     后面会详细讲这些实现是如何操作的~~~

   🎈🎈完结撒花🎈🎈

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

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

相关文章

远程控制软件优化(1)

远程控制软件优化(1) 第一版存在以下缺点: 1、四大部分中 Robot States 部分过于简陋,不适合放到论文中 2、Lidar BEV 图像显示效果非常差,显示不全且很稀疏 3、视频流传输延时过高,无法实现远程控制 以…

学python的第二十三天

原文链接:Python 图形化界面设计(Tkinter) - 简书 (jianshu.com) 子窗体(Toplevel) 直接上代码: # 子窗体 from tkinter import *def newwindow():winNew Toplevel(root)winNew.geometry(320x240)winNe…

C语言-atoi和atof函数的使用

人生应该树立目标,否则你的精力会白白浪费。💓💓💓 目录 •🌙知识回顾 🍋知识点一:atoi函数的使用和实现 • 🌰1.函数介绍 • 🌰2.代码演示 • 🌰3.atoi函数的…

《十一》Qt各种对话框之QInputDialog

QInputDialog QInputDialog 用于方便快捷地获取一个用户输入数据,支持整数 int、浮点数 double、文本 QString 三种数据。按照 QInputDialog 内部的输入控件,又可以分为整数输入控件 QSpinBox、浮点数输入控件 QDoubleSpinBox、单行文本输入控件 QLineE…

AI大模型日报#0428:AI聊天半年涨粉1000万、元象发布多模态XVERSE-V、字节发布视觉ViTamin

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。AI大模型日报今日要点: 今日,AI大模型领域动作频频,多家科技巨头和初创公司展示了其最新研发成果。快手…

暗区突围如何申请测试资格?暗区突围测试申请的方法轻松掌握

游戏中健康系统与其它射击游戏有很大区别,根据受伤部位、伤势的不同,会有不同的表现。除了头部之外,其它部位如果损坏后继续受到伤害,那么伤害将会分摊到身体其它部位。在暗区内或者暗区外都可以对角色进行治疗,角色不…

FebHost:深入分析企业海外市场选通用域名还是国别域名?

企业想进入海外在线市场,非常重要的一个环节是如何选择一个在线品牌域名,很多企业面临着选择.COM还是国别域名。以下是一些需要考虑的因素。 域名可用性 一个网站的域名可以给人留下深刻的品牌印象。新企业更倾向于选择 .com、.net 和 .org 等标准通用顶…

【哔哩哔哩笔试题汇总】2024-04-28-哔哩哔哩春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新b站近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f497…

由于找不到msvcr120.dll,无法继续执行代码

在日常编程中,缺少关键的msvcr120.dll文件可能会导致代码无法执行,给我们带来不便。针对缺少msvcr120.dll文件的情况,我们可以采取一些有效的解决方法来解决这一问题。通过下载安装或使用Visual C Redistributable工具安装该msvcr120.dll文件…

MySQL/MariaDB 如何查看当前的用户

MySQL 的所有数据库用户信息是存储在 user 数据表中的。 可以在登录成功数据后运行 SQL: MariaDB [(none)]> select user,host from user;就可以查看到数据中的所有用户信息。 MariaDB [(none)]> select user,host from user; ERROR 1046 (3D000): No databa…

K8S哲学 - statefulSet 灰度发布

kubectl get - 获取资源及配置文件 kubectl get resource 【resourceName -oyaml】 kubectl create - 指定镜像创建或者 指定文件创建 kubectl create resource 【resourceName】 --imagemyImage 【-f my.yaml】 kubectl delete kubectl describe resource resourc…

医院敏感文件交互 如何保障安全和效率?

医院会产生大量的敏感文件,这些敏感文件交互时,都需要使用特殊的手段,来保障数据的安全性。 医院的敏感数据主要包括以下几类: 1、患者基本信息:包括患者的姓名、身份证号码、户籍地或现住址、联系方式、文化程度、既…

LeetCode - LCR 179.查找总价格为目标值的两个商品

一. 题目链接 LeetCode - LCR 179. 查找总价格为目标值的两个商品 解法(双指针 - 对撞指针): 算法思路: 注意到本题是升序的数组,因此可以用「对撞指针」优化时间复杂度。 算法流程: 初始化left &#…

el-form 表单设置某个参数非必填验证

html <el-form ref"form" :rules"rules"><el-form-item prop"tiktokEmail" label"邮箱" ><el-input v-model"form.tiktokEmail" placeholder"邮箱" ></el-input></el-form-item&…

一篇了解reactor框架特性

一篇了解reactor框架特性 本文档的一些典型的名词如下&#xff1a; Publisher&#xff08;发布者&#xff09;、Subscriber&#xff08;订阅者&#xff09;、Subscription&#xff08;订阅 n.&#xff09;、subscribe&#xff08;订阅 v.&#xff09;。event/signal&#xff0…

一文搞懂 One-Hot Encoding(独热编码)

文章目录 前言 1、独热编码的原理 2、独热编码的分类 3、独热编码的应用 前言 本文将从独热编码的原理、独热编码的分类、独热编码的应用三个方面&#xff0c;来展开介绍独热编码 One-Hot Encoding。 1、独热编码的原理 特征数字化&#xff1a;将分类变量&#xff08;或称为离…

手机测试之-adb

一、Android Debug Bridge 1.1 Android系统主要的目录 1.2 ADB工具介绍 ADB的全称为Android Debug Bridge,就是起到调试桥的作用,是Android SDK里面一个多用途调试工具,通过它可以和Android设备或模拟器通信,借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多…

艾体宝案例 | 使用Redis和Spring Ai构建rag应用程序

随着AI技术的不断进步&#xff0c;开发者面临着如何有效利用现有工具和技术来加速开发过程的挑战。Redis与Spring AI的结合为Java开发者提供了一个强大的平台&#xff0c;以便快速构建并部署响应式AI应用。探索这一整合如何通过简化的开发流程&#xff0c;让开发者能够更专注于…

python——井字棋游戏——登入注册界面

本篇文章只讲解登入和注册页面&#xff0c;在后面的文章中会讲解井字棋游戏&#xff0c;然后把井字棋和登入界面进行连接&#xff0c;整合成一个完整的游戏。 登入注册界面在本篇文章的末尾。 1.实现登入界面 &#xff08;1&#xff09;导入图片 把这张图片存储在与代码路径…

小程序的合同是怎么样写的

​很多商家找第三方做小程序都遭遇到了各种问题&#xff0c;如访问速度慢、服务器关闭、反复收费等。如果当初商家找的是正规的第三方服务商&#xff0c;双方签订了明确的合同条款&#xff0c;出现任何问题后&#xff0c;相信都能够进行解决。下面将具体介绍合同内容&#xff0…