浅谈顺序表基本操作

🤷‍♀️🤷‍♀️🤷‍♀️ 今天给大家带来的是数据结构——顺序表的实现(增删查改)。 

清风的CSDN博客主页

🎉欢迎👍点赞✍评论❤️收藏

😛😛😛希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流!

动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛

目录

 一、顺序表的构造函数

1.1接口

1.2 类定义

二、实现的功能

2.1检查容量

 2.2表尾插入元素

2.3判满

2.4指定位置增加元素

2.5判空

2.6检查数据是否在表中

2.7查找指定元素的下标

2.8获取指定位置的元素

2.9设置表中指定位置的元素

2.10删除元素

2.11获取元素个数

2.12清空顺序表

2.13显示顺序表


源码链接-清风的Gitee

 一、顺序表的构造函数

1.1接口

public interface IList {// 新增元素,默认在数组最后新增void add(int data);// 在 pos 位置新增元素void add(int pos, int data);// 判定是否包含某个元素boolean contains(int toFind);// 查找某个元素对应的位置int indexOf(int toFind);// 获取 pos 位置的元素int get(int pos);// 给 pos 位置的元素设为 valuevoid set(int pos, int value);//删除第一次出现的关键字key,更新void remove(int toRemove);// 获取顺序表长度int size();// 清空顺序表void clear();// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的void display();//顺序表判满boolean isFull();//顺序表判空boolean isEmpty();
}

1.2 类定义

class MyArrayList implements IList {private int[] elem;private int usedSize;public static final int DEFAULT_SIZE=2;public MyArrayList(){this.elem=new int[DEFAULT_SIZE];this.usedSize=0;}public MyArrayList(int capacity){this.elem=new int[capacity];}
}

二、实现的功能

2.1检查容量

如果当前容量不足,则扩大2倍。

    private void checkCapacity(){//检查容量if(isFull()){//扩容elem=Arrays.copyOf(elem,elem.length*2);}}

 2.2表尾插入元素

在插入前,首先检查容量,容量不足就先扩容,之后继续插入。

    public void add(int data) {checkCapacity();elem[this.usedSize]=data;this.usedSize++;}

2.3判满

    public boolean isFull() {/* if(usedSize==elem.length){return true;}return false;*/return usedSize==elem.length;}

2.4指定位置增加元素

首先要检查指定位置是否合法:

    private void checkPosOnAdd(int pos) throws PosIllegality{if(pos<0 || pos>usedSize){System.out.println("插入不合法!");throw new PosIllegality("插入元素下标异常:>"+pos);}}
    public void add(int pos, int data) {try{checkPosOnAdd(pos);//检查pos位置合法性}catch (PosIllegality e){e.printStackTrace();//捕获异常并打印插入元素下标异常return;}checkCapacity();//1.从最后一个有效的数据开始往后移动,当i小于pos就结束for (int i = usedSize-1; i >=pos ; i--) {elem[i+1]=elem[i];}//2.存放元素到pos位置elem[pos]=data;//3.顺序表长度加一usedSize++;}

2.5判空

  public boolean isEmpty() {return usedSize==0;}

2.6检查数据是否在表中

    public boolean contains(int toFind) {if(isEmpty()){return false;}for (int i = 0; i < usedSize; i++) {//如果是查找引用类型,一定要用equals方法!!!if(elem[i]==toFind){return true;}}return false;}

2.7查找指定元素的下标

    public int indexOf(int toFind) {if(isEmpty()){return -1;}for (int i = 0; i < usedSize; i++) {//如果是查找引用类型,一定要用equals方法!!!if(elem[i]==toFind){return i;}}return -1;}

2.8获取指定位置的元素

同样需要检查指定位置是否合法:

    private void checkPosOnGetAndSet(int pos) throws PosIllegality{if(pos<0 || pos>=usedSize){System.out.println("获取元素下标不合法!");throw new PosIllegality("获取元素下标异常:>"+pos);}}
    public int get(int pos)throws MyArrayListEmpty {if(isEmpty()){throw new MyArrayListEmpty("顺序表为空!!");}checkPosOnGetAndSet(pos);return elem[pos];}

2.9设置表中指定位置的元素

  public void set(int pos, int value) {checkPosOnGetAndSet(pos);elem[pos]=value;}

2.10删除元素

删除元素,首先要找到要删除元素的下标,可以调用上面写过的函数。

    public void remove(int toRemove) {/*** 1.找到删除的数字下标* 2.挪动数据* 3.usedSize--*/int index=indexOf(toRemove);if(index==-1){System.out.println("无此元素:>"+toRemove);return;}for (int i = index; i < usedSize-1; i++) {elem[i]=elem[i+1];}usedSize--;}

2.11获取元素个数

  public int size() {return this.usedSize;}

2.12清空顺序表

 public void clear() {this.usedSize=0;//如果是引用数据类型的清空,通过for循环把元素置空即可}

2.13显示顺序表

    public void display() {for (int i = 0; i < this.usedSize; i++) {System.out.println(elem[i]+" ");}System.out.println();}

🎉好啦,今天的分享就到这里!!

✨创作不易,还希望各位大佬支持一下!

👍点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

✏️评论:你的意见是我进步的财富!

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

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

相关文章

JavaWeb基础(2)- Web概述、HTTP协议、Servlet、Request与Response

JavaWeb基础&#xff08;2&#xff09;- Web概述、HTTP协议、Servlet、Request与Response 文章目录 JavaWeb基础&#xff08;2&#xff09;- Web概述、HTTP协议、Servlet、Request与Response3 Web概述3.1 Web和JavaWeb的概念3.2 JavaWeb技术栈3.2.1 B/S架构**3.2.2 静态资源**3…

不带控制器打包exe,转pdf文件时失败的原因

加了注释的两条代码后&#xff0c;控制器会显示一个docx转pdf的进度条。这个进度条需要控制器的实现&#xff0c;如果转exe不带控制器的话&#xff0c;当点击转换为pdf的按钮就会导致程序出错和闪退。 __init__.py文件的入口

Netplan介绍

1 介绍 1.1 简介 Netplan是一个抽象网络配置描述器。通过netplan命令&#xff0c;你只需用一个 YAML文件描述每个网络接口所需配置。netplan并不关系底层管理工具是NetworkManager还是networkd。 它是一个在 Linux 系统上进行网络配置的实用程序。您创建所需接口的描述并定义…

MAC OS更新系统后IDEA中的SVN报错无法使用

MAC OS更新系统后IDEA中的SVN报错无法使用 有没有大神懂

java: 5-3 for

文章目录 1. for1.1 基本语法1.2 练习1.3 执行流程1.4 细节1.5 编程思想 (练习) 1. for 1.1 基本语法 for 关键字&#xff0c;表示循环控制for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代循环操作 , 这里可以有多条语句&#xff0c;也就是我们要循环…

FreeRTOS学习第6篇–任务状态挂起恢复删除等操作

目录 FreeRTOS学习第6篇--任务状态挂起恢复删除等操作任务的状态设计实验IRReceiver_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第6篇–任务状态挂起恢复删除等操作 本文目标&#xff1a;学习与使用FreeRTOS中的几项操作&#xff0c;有挂起恢复删除等操作…

在MeshLab中创建简单的几何对象

文章目录 立方体和平面网格正多面体圆形相关球类隐式曲面 在Filters->Create New Mesh Layer的子菜单中&#xff0c;提供了大量几何对象&#xff0c;列表如下 菜单指令图形菜单指令图形Dodecahedron正十二面体Icosahedron正二十面体Tetrahedron正四面体Octahedron正八面体B…

Kafka(五)生产者

目录 Kafka生产者1 配置生产者bootstrap.serverskey.serializervalue.serializerclient.id""acksallbuffer.memory33554432(32MB)compression.typenonebatch.size16384(16KB)max.in.flight.requests.per.connection5max.request.size1048576(1MB)receive.buffer.byte…

file.seek规定从txt文档的某个区间开始读取文件内容

with open(f,r,encodingutf-8) as file:file.seek(10)# 定位到文件中的第10个字节,10个字节之后开始读取content file.read(100) # 读取100个字节的内容print(content:\n,content)打印结果&#xff1a; 未截取的&#xff0c;全部内容 1200001 1233331 1244441 0000121 1200001…

xdoj托普利兹矩阵

#include <stdio.h> int main() {char Hn0,Cn0;int i0,n,j,h[10],c[10],a[10][10];while(Hn!\n)//输入 行向量{scanf("%d",&h[i]);i;scanf("%c",&Hn);}i0;while(Cn!\n)//输入 列向量{scanf("%d",&c[i]);i;scanf("%c&quo…

面试官,我准备好了!——亲身体验Java面试与攻略分享

面试官,我准备好了!——亲身体验Java面试与攻略分享 从大学时代频繁在电脑前敲下System.out.println("Hello, World!");的那一刻起,我就知道自己的未来与Java结下了不解之缘。时间过得飞快,转眼间我已经穿梭于各类Java面试中,积累了相当的经验。今天,我将和大…

目标检测中的常见指标

概念引入&#xff1a; TP&#xff1a;True Positive IoU > 阈值 检测框数量 FP: False Positive IoU < 阈值 检测框数量 FN: False Negative 漏检框数量 Precision:查准率 Recall:查全率&#xff08;召回率&#xff09; AP&am…

【精通C语言】:分支结构switch语句的灵活运用

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C语言详解 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、switch语句1.1 语法1.2 代码示例 二、switch的控制语句2.1 break2.2 defualt子句 三、…

PKI 公钥基础设施,公钥私钥,信息摘要,数字签名,数字证书

PKI 公钥基础设施 https 基于 PKI 技术。PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;是一种安全体系结构&#xff0c;用于管理数字证书和密钥对&#xff0c;以确保安全的数据传输和身份验证。PKI 采用了公钥加密技术&#xff0c;其中每个实…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章&#xff1a; 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

H266/VVC网络适配层概述

视频编码标准的分层结构 视频数据分层的必要性&#xff1a;网络类型的多样性、不同的应用场景对视频有不同的需求。 编码标准的分层结构&#xff1a;为了适应不同网络和应用需求&#xff0c;视频编码数据根据其内容特性被分成若干NAL单元&#xff08;NAL Unit&#xff0c;NALU…

Docker学习笔记(一):Docker命令总结

Docker命令总结 一、Docker介绍1.1 镜像与容器区别 二、Docker命令 一、Docker介绍 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者在几乎任何环境中运行应用程序&#xff0c;而无需担心运行环境的问题。Docker的核心概念是容器&#xff0c;它可以将应用程序及其依赖…

PLC远程上下载功能实现的基本原理

PLC远程上下载功能实现的基本原理 首先&#xff0c;需要一个支持PLC远程上下载的物联网网关&#xff0c;该网关通常具有网口、RS485、232等接口&#xff0c;以连接PLC和其他物联网设备。远程上下载物联网网关是一种用于实现PLC程序远程上传和下载的技术。PLC与物联网网关之间需…

c# entity freamwork 插入批量数据如何提升性能 AutoDetectChangesEnabled

在C#的Entity Framework&#xff08;EF&#xff09;中&#xff0c;AutoDetectChangesEnabled 是一个影响上下文行为的重要属性&#xff0c;它默认设置为 true。这个属性控制着DbContext实例自动检测实体对象 ** 中更改的能力。 当AutoDetectChangesEnabled 设置为 true时&…

2024--Django平台开发-基础信息(一)

一、前置知识点 - Python环境搭建 (Python解释器、Pycharm、环境变量等) - 基础语法(条件、循环、输入输出、编码等) - 数据类型(整型、布尔型、字符串、列表、字典、元组、集合等) - 函数(文件操作、返回值、参数、作用域等) - 面向对象 (类、对象、封装、继承、多态等)包和模…