-- 数据结构 顺序表 --Java

news2024/11/22 1:18:44

顺序表:使用一段物理地址连续的储存单元依此储存元素,一般使用数组实现顺序表的增删查改

实现

顺序表其实就是将元素储存到一个数组中,并且这个数组会根据你的插入的数据的增加而自动进行数组的扩容

字段的设计

使用了多态是为了能储存各种类型的数据,继承的接口是把要写的方法卸载接口中然后再类中实现这样方便管理

default是默认的数组的大小,size是储存的元素数量,capacity是储存元素的数组

增 add

直接将要添加的元素加入size指向的位置就好,应为size指向的正好是第一个没有储存数据的空位置,插入后size++记录下插入的元素个数,在插入时可能会存在数组储存满

(size == capacity.length)了的情况,那么这时我们就需要对数组进行扩容,对于扩容具体要扩多大,这里使用的是1.5倍

删除 remove

要删除首先要找到要删除的这个元素,然后将这个元素后面的元素向前移动一步,覆盖掉要删除的这个元素,这时我的删除就写好了

为了找到这个元素,我们只需要遍历有效数据数量而不是整个数组

查 get

遍历整个有效数据,若存在就返回true,若不存在返回false

改 set

更改指定下表的值,要注意下表的合法性

这里如果不合法会抛出自定义的异常

增删查改over

接下来还可以写出自己需要的各种方法 指定位置的插入 清空顺序表等等

顺序表可以实现数据的随机查询,因为数据是连续的,只需要输入对应的下标就可以查询

对于顺序表的最大弊端就是会造成空间的浪费,比如他扩容了100个整形的位置但是可能在我存储到50个就没有数据的存储了,那么就造成50个空间的浪费,若要避免空间的浪费,那么就可以使用另一种数据结构链表

end 

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

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

相关文章

C++ | Leetcode C++题解之第377题组合总和IV

题目&#xff1a; 题解&#xff1a; class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1);dp[0] 1;for (int i 1; i < target; i) {for (int& num : nums) {if (num < i && dp[i - …

软考报名信息填错了,还可以修改吗?

软考报名信息的准确性至关重要&#xff0c;它直接关系到考生的考试资格及后续流程。若不慎填写错误&#xff0c;别担心&#xff0c;根据发现错误的时间点&#xff0c;下面是详细的修改指南。 一、报名审核前 情况说明&#xff1a;若您在报名审核前发现信息填写错误&#xff0c…

python库sqlacodegen生成sqlalchemy模型对象代码

工具介绍: 使用SQLAlchemy,需要将数据库表按照其识别的格式创建成Model,但一般情况下都是已经创建并定义好了数据库表,再创建Model。如果人工根据表结构写Model,不仅费时费力,还难免会出错。 而使用sqlacodegen,则可自动生成sqlalchemy表对象模型。 安装 首先进入虚…

黑马JavaWeb开发笔记05——JavaScript介绍、基本语法、函数、对象(Array, String, json, BOM, DOM)、事件监听

文章目录 前言一、JavaScript介绍和引入方式1. 介绍2. 引入方式3. VScode引入演示 二、JavaScript基础语法1. 书写语法2. 变量2.1 var2.2 let2.3 const 3. 数据类型、运算符、流程控制语句3.1 数据类型3.2 运算符3.3 流程控制语句 三、JavaScript函数1. 第一种定义方式2. 第二种…

【C++ Primer Plus习题】6.8

问题: 解答: #include <iostream> #include <fstream> #include <string> using namespace std;int main() {string filename;ifstream stream;char read_char;int count0;cout << "请输入要打开的文件:";getline(cin, filename);stream.op…

文章生成用这三款伪原创软件效果好

在当今信息爆炸的时代&#xff0c;无论是网站运营者、博主、作家还是学生&#xff0c;对文章的需求量越来越大。他们需要用大理的的原创文章来满足他们工作需求。然而&#xff0c;对于许多人来说&#xff0c;写作一篇优质的文章并非易事。这就产生了一种需求&#xff0c;那就是…

【2024】Datawhale AI夏令营-从零上手Mobile Agent-Task1笔记

Task1主要任务是跑通Mobile-Agent Demo。 一、主要步骤 1、申领大模型API 教程推荐使用阿里云百炼平台&#xff0c;申领个人的大模型API后&#xff0c;可通过API KEY调用平台上的视觉-语言大模型。后续使用的视觉-语言大模型为qwen-vl-plus。 2、下载Android Studio 3、在…

Neo4j导入csv数据,并创建节点

Neo4j 是一种图数据库&#xff0c;特别适合管理和分析复杂的关系数据。 数据来源&#xff1a;http://openkg.cn/ 导入到 Neo4j 的合适场景&#xff1a; 需要在物种分类中查找层级关系&#xff08;如物种的科、属等&#xff09;。 需要进行关系查询和图结构的分析。 想在分类树…

[mysql]mysql的演示使用

1&#xff1a;show databases 这里第一个information_schema代表的是数据库的基本系统信息&#xff0c;数据库名称&#xff0c;表的名称&#xff0c;存储权限 第二个是mysql&#xff0c;保存的是我们数据库运行的时候需要的系统信息&#xff0c;比如数据库文件夹 当前的字库集…

算法笔试-编程练习-H-02-24

w这套题&#xff0c;侧重模拟和题目理解&#xff0c;只要按照题目描述正常复现整体分数应该不错 一、数据重删 数据重删是一种节约存储空间的技术&#xff0c;通常情况下&#xff0c;在数据存储池内是有很多重复的数据库。重删则是将这些重复的数据块找出并处理的技术。简单地…

回溯+记忆搜索——力扣每日一题2024.8.25

给定一个整数数组 nums 和一个正整数 k&#xff0c;找出是否有可能把这个数组分成 k 个非空子集&#xff0c;其总和都相等。 示例 1&#xff1a; 输入&#xff1a; nums [4, 3, 2, 3, 5, 2, 1], k 4 输出&#xff1a; True 说明&#xff1a; 有可能将其分成 4 个子集&#x…

复制会话与复制SSH渠道的区别

文章目录 新建会话时干了什么复制会话的时候干了什么复制SSH渠道的时候干了什么复制会话与复制SSH渠道的区别TIPS&#xff1a;1. /dev/pts/n2. 守护进程 新建会话时干了什么 在第一次启动xshell时&#xff0c;提供了新建会话选项&#xff0c;创建过程如下&#xff1a; 创建SSH…

前端速通面经八股系列(五)—— Vue(上)

Vue系列目录 一、Vue 基础1. Vue的基本原理2. 双向数据绑定的原理3. 使用 Object.defineProperty() 来进行数据劫持有什么缺点&#xff1f;4. MVVM、MVC、MVP的区别5. Computed 和 Watch 的区别6. Computed 和 Methods 的区别7. slot是什么&#xff1f;有什么作用&#xff1f;原…

【Qt】多元素控件QTreeWidget

多元素控件QTreeWidget 使用QTreeWidget表示一个树型结构&#xff0c;里面的每一个元素都是QTreeWidgetItem&#xff0c;每个QTreeWidgetItem可以包含多个文本和图标&#xff0c;每个文本/图标表示一列。 可以给QTreeWidget设置顶层结构&#xff08;顶层节点可以有多个&#…

解放双手全自动铲屎!CEWEY、霍曼、小佩哪款智能猫砂盆更值得?

这马上要到节假日了&#xff0c;回家的话&#xff0c;自己养的猫咪该怎么办呢&#xff1f;如果猫咪的猫砂盆无人照料的话&#xff0c;那么就会导致我们的猫砂盆里全是猫咪的粪便&#xff0c;这些粪便放久了无人清理就会开始散发恶臭&#xff0c;导致家里臭气熏天&#xff0c;最…

【C++对于C语言的扩充】:auto关键字、范围for以及nullptr

文章目录 &#x1f680;auto关键字&#xff08;C11&#xff09;✈️auto介绍✈️auto的使用细则✈️auto不能使用的场景 &#x1f680;范围for&#xff08;C11&#xff09;✈️范围for介绍✈️范围for的使用条件 &#x1f680;指针空值nullptr&#xff08;C11&#xff09; &…

医药行业智能客服机器人的未来发展趋势探析

Hi~这里是ProXiao 文章参考&#xff1a;晓观点 智能客服机器人在医药行业的发展趋势是什么&#xff1f;https://insight.xiaoduoai.com/intelligent-tools/intelligent-customer-service-robot/what-is-the-development-trend-of-intelligent-customer-service-robots-in-the…

极光推送(JPush)赋能登虹科技,打造智慧视觉云平台新体验

近日&#xff0c;中国领先的客户互动和营销科技服务商极光&#xff08;Aurora Mobile&#xff0c;纳斯达克股票代码&#xff1a;JG&#xff09;与杭州登虹科技有限公司&#xff08;以下简称“登虹科技&#xff08;Closeli&#xff09;”&#xff09;达成合作&#xff0c;借助极…

【Threejs学习】Dat.GUI 辅助调参工具

一、介绍 dat.GUI 辅助调参工具&#xff0c;是一个轻量级的图形用户界面库&#xff08;GUI 组件&#xff09;&#xff0c;使用这个库可以很容易地创建出能够改变代码变量的界面组件。 github地址&#xff1a; https://github.com/dataarts/dat.gui 二、使用 1.使用cdn引入 …

基于 SpringBoot+Vue的——陪玩平台

文章目录 前言1.项目类型2.技术栈介绍3.功能介绍4.项目亮点5.适用场景6.项目展示7.诚邀参与 前言 大家好&#xff0c;我是执手天涯&#xff0c;今天非常荣幸地向大家介绍一款备受瞩目的创新项目基于 SpringBootVue的——陪玩平台。这不仅仅是一个游戏社交平台&#xff0c;更是…