【顺序表的模拟实现Java】

news2024/10/18 7:05:23

【顺序表的模拟实现Java】

  • 顺序表的介绍
  • Java代码实现
  • 检验代码功能

顺序表的介绍

由于之前在c语言板块写过详细的顺序表介绍,所以这一篇文章主要为Java代码的实现
下面为顺序表介绍的链接,如有需要点击下方链接跳转
c语言顺序表讲解

Java代码实现

public class MyArraylist {

    public int[] elem;
    public int usedSize;//0
    //默认容量
    private static final int DEFAULT_SIZE = 10;

    public MyArraylist() {
        this.elem = new int[DEFAULT_SIZE];
    }

    /**
     * 打印顺序表:
     * 根据usedSize判断即可
     */
    public void display() {
        for (int i = 0; i < usedSize; i++) {
            System.out.print(elem[i]+" ");
        }
        System.out.println("\n");
    }

    // 新增元素,默认在数组最后新增
    public void add(int data) {
        if(isFull()) return;
        elem[usedSize++]=data;
    }

    /**
     * 判断当前的顺序表是不是满的!
     *
     * @return true:满   false代表空
     */
    public boolean isFull() {
        if(usedSize==DEFAULT_SIZE) return true;
        else return false;
    }


    private boolean checkPosInAdd(int pos) {

        return true;//合法
    }

    // 在 pos 位置新增元素
    public void add(int pos, int data) {
        if(isFull()) return;
        for(int i=usedSize;i>pos;i--){
            elem[i]=elem[i-1];
        }
        elem[pos]=data;
        usedSize++;
    }

    // 判定是否包含某个元素
    public boolean contains(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if(elem[i]==toFind) return true;
        }
        return false;
    }

    // 查找某个元素对应的位置
    public int indexOf(int toFind) {
        for (int i = 0; i < usedSize; i++) {
            if(elem[i]==toFind) return i;
        }
        return -1;
    }

    // 获取 pos 位置的元素
    public int get(int pos) {
        if(isEmpty()) return -1;
        if(pos>=usedSize||pos<0) return -1;
        return elem[pos];
    }

    private boolean isEmpty() {
        if(elem==null) return true;
        return false;
    }

    // 给 pos 位置的元素设为【更新为】 value
    public void set(int pos, int value) {
        if(isEmpty()) return ;
        if(pos>=usedSize||pos<0) return ;
        elem[pos]=value;
    }

    /**
     * 删除第一次出现的关键字key
     *
     * @param key
     */
    public void remove(int key) {
        int i=indexOf(key);
        if(i==-1) return;
        for(;i<usedSize-1;i++){
            elem[i]=elem[i+1];
        }
        usedSize--;

    }

    // 获取顺序表长度
    public int size() {
        return usedSize;
    }

    // 清空顺序表
    public void clear() {
        elem=null;
        usedSize=0;
    }
    }

检验代码功能

main方法如下:

 public static void main(String[] args) {
        MyArraylist l=new MyArraylist();

        l.add(1);
        l.add(2);
        l.add(3);
        l.add(0,1);
        l.add(3,2);
        System.out.print("插入后的顺序表 : ");
        l.display();

        l.remove(2);
        System.out.print("删除第一个2:");
        l.display();

        System.out.println("是否包含5: "+ l.contains(5));
        System.out.println("是否包含3: "+ l.contains(3));

        l.clear();
        System.out.print("清空后的链表: ");
        l.display();
    }

运行结果显示如下:
在这里插入图片描述
这篇文章到这里就结束了,希望对你有所帮助!

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

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

相关文章

Halcon基础-二维码识别

Halcon基础-二维码识别 1、二维码分类2、代码实现3、运行效果 1、二维码分类 二维码&#xff08;Quick Response Code&#xff0c;简称 QR Code&#xff09;是一种矩阵式二维码&#xff0c;能够在水平和垂直方向上存储信息。它们最初由日本的丰田子公司Denso Wave在1994年发明…

单细胞分析Seurat使用相关的10个问题答疑精选!

作为一个刚刚开始进行单细胞转录组分析的菜鸟&#xff0c;R语言底子没有&#xff0c;有时候除了会copy外&#xff0c;如果你让我写个for循环&#xff0c;我只能cross my fingers。。。。 于是我看见了https://satijalab.org/seurat/&#xff0c;Seurat是一个R软件包&#xff0…

基于SpringBoot的课程辅助教学系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

java_跳转控制语句break

案例 1-100 以内的数求和&#xff0c;求出 当和 第一次大于 20 的当前数 【for break】 public class BreakExercise { //编写一个 main 方法 public static void main(String[] args) { //1-100 以内的数求和&#xff0c;求出 当和 第一次大于 20 的当前数 【for break】 …

基于 C# .NET Framework 开发实现 WebService服务实例详解——一文学懂WebService服务开发技术及应用

目录 1. Web Service 概念介绍 1.1 什么是 Web Service 1.2 SOAP&#xff08;简单对象访问协议&#xff09; 1.3 WSDL&#xff08;Web 服务描述语言&#xff09; 1.4 应用场景 2. 创建 Web Service 项目 3. 编写 Web Service 代码 3.1 打开 WebService1.asmx.cs 3.2 编…

鸿蒙网络编程系列3-TCP客户端通讯示例

1. TCP简介 TCP协议是传输层最重要的协议&#xff0c;提供了可靠、有序的数据传输&#xff0c;是多个广泛使用的表示层协议的运行基础&#xff0c;相对于UDP来说&#xff0c;TCP需要经过三次握手后才能建立连接&#xff0c;建立连接后才能进行数据传输&#xff0c;所以效率差了…

太速科技-426-基于XC7Z100+TMS320C6678的图像处理板卡

基于XC7Z100TMS320C6678的图像处理板卡 一、板卡概述 板卡基于独立的结构&#xff0c;实现ZYNQ XC7Z100DSP TMS320C6678的多路图像输入输出接口的综合图像处理&#xff0c;包含1路Camera link输入输出、1路HD-SDI输入输出、1路复合视频输入输出、2路光纤等视频接口&#xff0c;…

一文了解微服务与多租户

在当今快速发展的数字化时代&#xff0c;软件架构的选择对于企业的成功至关重要。微服务和多租户作为两种较为热门的架构模式&#xff0c;正逐渐成为企业构建高效、灵活和可扩展软件系统的热门选择。 一、微服务架构 &#xff08;一&#xff09;微服务的定义与概念 微服务是一…

HarmonyOS开发(状态管理,页面路由,动画)

官网 https://developer.huawei.com/consumer/cn/ 一、状态管理 在声明式UI中&#xff0c;是以状态驱动视图更新 1.State 状态(State)&#xff1a;指驱动视图更新的数据&#xff0c;被装饰器标记的变量 视图(View)&#xff1a;基于UI描述渲染得到用户界面 说明 State装饰…

《七度荒域:混沌之树》风灵月影二十二项游戏辅助:上帝模式/无限HP和EP/金币不减

《七度荒域:混沌之树》是款国产Roguelike银河恶魔城横版动作游戏&#xff0c;融合刷宝玩法。玩家将扮演修补世界的命运之子&#xff0c;探寻碎裂世界的秘密&#xff0c;在战斗轮回中成长&#xff0c;挑战未知与隐秘力量。风灵月影版修改器提供更多自定义和游戏体验调整选项&…

项目错误合集-自用

day1 验证码错误前后端交互错误 今天在写修改密码时,前端传递给后端验证码时,第一次犯错,redis中空指针异常,检查后发现 redis中没有账号的键,调试发现,我将user的account的键写成了getYzm 写对之后,发现出现了验证码不正确的错误,但是我是将redis中的数据直接复制过…

STM32——关于I2C的讲解与应用

1、什么是I2C&#xff1f; I2C(Inter&#xff0d;Integrated Circuit)是一种通用的总线协议。它是由Philips(飞利浦)公司&#xff0c;现NXP(恩智浦)半导体开发的一种简单的双向两线制总线协议标准。是一种半双工的同步通信协议。 2、I2C协议标准 I2C协议使用两根总线线路&am…

Bilidown v1.2.4 B站在线视频下载解析工具中文单文件版

Bilidown是一款专为B站视频下载而设计的工具&#xff0c;一款简洁好用的B站视频下载工具&#xff0c;支持由UP主上传的单集&#xff0c;多集以及相关封面&#xff0c;弹幕&#xff0c;字幕&#xff0c;音乐&#xff0c;刮削等等&#xff0c;支持任意粒度批量组合&#xff0c;登…

10-Python基础编程之函数

Python基础编程之函数 概念基本使用参数单个参数多个参数不定长参数缺省参数注意事项 返回值使用描述偏函数高阶函数返回函数匿名函数闭包装饰器生成器递归函数函数的作用域 概念 写了一段代码实现了某个小功能&#xff1a;然后把这些代码集中到一块&#xff0c;起一个名字&am…

c++就业 创建新的设计模式

virtual自然生成虚函数表&#xff08;一维数组记录了虚函数地址 通过偏移可以调相对应的方法&#xff09; vp 编译的时候地址自然会赋值给相对应的对象 如何体现多态 没有虚函数重写 那么就是早绑定 就比如subject会转换成base类型 p指向base对象 有虚函数就是晚绑定 p指向subj…

深度学习神经网络的7大分类

深度学习中的神经网络可通过其结构和功能分为多种类型&#xff0c;每种都针对特定的数据特征和应用场景进行了优化。 深度学习7大神经网络如下&#xff1a; 01 前馈神经网络&#xff08;Feedforward Neural Networks, FNN&#xff09;&#xff1a; 这是最基本的神经网络形式…

AI周报(10.6-10.12)

AI应用-AI中医诊疗 AI中医诊疗通过整合中医“望、闻、问、切”的传统诊断方法&#xff0c;并结合现代AI技术&#xff0c;如自然语言处理和图像识别&#xff0c;来辅助医生进行更精准的诊断。 望诊&#xff0c;作为中医四诊之首&#xff0c;其精髓在于“司外揣内”。医者通过细致…

Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)

文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

centors7升级GLIBC2.18

错误来源&#xff1a;找不到GLIBC2.18&#xff0c;因为glibc的版本是2.17 网上大多教程方法&#xff0c;反正我是行不通&#xff1a; 方法1&#xff1a;更新源&#xff0c;然后使用yum安装更新 方法2&#xff1a;下载源码&#xff0c;configrue&#xff0c;make执行 wget h…

添加卡巴斯基杀毒软件(KES)的更新源

最近不知道怎么了&#xff0c;家里的电脑卡巴斯基&#xff08;KES&#xff09;怎么更新都更新不了&#xff0c;在网上找到了几个卡巴斯基的服务器: 添加步骤&#xff1a; 1.双击右下角的卡巴斯基图标。 2.依次按如下图示添加&#xff1a; 以下这步是最关键的&#xff0c;一定要…