iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现顺序表的操作
  • 774
分享到

Java实现顺序表的操作

2024-04-02 19:04:59 774人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了Java实现顺序表的基本操作,供大家参考,具体内容如下 静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。 接口 package com.GitH

本文实例为大家分享了Java实现顺序表的基本操作,供大家参考,具体内容如下

静态顺序表:使用定长数组存储。
动态顺序表:使用动态开辟的数组存储。

接口

package com.GitHub.sqlist;

public interface ISequence {
    // 在 pos 位置插入 val
    boolean add(int pos, Object data);

    // 查找关键字 key 找到返回 key 的下表,没有返回 -1
    int search(Object key);

    // 查找是否包含关键字 key 是否在顺序表当中(这个和search有点冲突)
    boolean contains(Object key);

    // 得到 pos 位置的值
    Object getPos(int pos);

    // 删除第一次出现的关键字 key
    Object remove(Object key);

    // 得到顺序表的长度
    int size();

    // 打印顺序表
    void display();

    // 清空顺序表以防内存泄漏
    void clear();
}

实现接口里的每个方法

package com.github.sqlist;

import java.util.Arrays;


public class MySequenceImpl implements ISequence {

    private Object[] elem;
    // 有效数据个数
    private int usedSize;
    private static final int DEFAULT_SIZE = 10;

    public SqList() {
        this.elem = new Object[DEFAULT_SIZE];
        this.usedSize = 0;
    }

    
    private boolean isFull() {
        return this.elem.length == this.usedSize;
    }

    
    @Override
    public boolean add(int pos, Object data) {
        // 1. 判断pos位置的合法性
        if (pos < 0 || pos > this.elem.length) {
            return false;
        }

        // 2. 判断是否满了,如果满了进行扩容
        if (isFull()) {
            this.elem = Arrays.copyOf(this.elem, 2*this.elem.length);
        }

        // 3. 把pos位置以及之后的数全部向后挪一个位置
        for (int i = this.usedSize-1; i >= pos; i--) {
            this.elem[i+1] = this.elem[i];
        }

        // 4. 在 pos 位置插入 val
        this.elem[pos] = data;

        // 5. 更新长度
        this.usedSize++;

        return true;
    }

    
    private boolean isEmpty() {
        return this.usedSize == 0;
    }

    
    @Override
    public int search(Object key) {
        // 1. 判断是否为空
        if (isEmpty()) {
            return -1;
        }

        // 2. 遍历查找
        for (int i = 0; i < this.elem.length; i++) {
            // 注意:判断条件不能写成:this.elem[i] == key
            if (this.elem[i].equals(key)) {
                return i;
            }
        }
        return -1;
    }

    
    @Override
    public boolean contains(Object key) {
        // 1. 判断是否为空
        if (isEmpty()) {
            return false;
        }

        // 2. 遍历查找
        for (int i = 0; i < this.elem.length; i++) {
            // 注意:判断条件不能写成:this.elem[i] == key
            if (this.elem[i].equals(key)) {
                return true;
            }
        }
        return false;
    }

    
    @Override
    public Object getPos(int pos) {
        // 1. 判断位置是否合法
        if (pos<0 || pos>=this.elem.length) {
            return null;
        }

        // 2. 位置合法
        return this.elem[pos];
    }

    
    @Override
    public Object remove(Object key) {
        // 1. 先查表看有没有这个关键字
        // index:关键字下标
        int index = search(key);

        // 2. 若表里没有这个关键字
        if (index == -1) {
            return null;
        }

        // 3. 表里有这个关键字
        Object data = this.elem[index];
        int i;
        // 删除第一次出现的关键字 key,把key后面的数全部向前挪一个位置
        for (i = index; i < this.usedSize; i++) {
            elem[i] = elem[i+1];
        }
        this.usedSize--;
        this.elem[i+1] = null;
        return data;
    }

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

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

    
    @Override
    public void clear() {
        for (int i = 0; i < this.usedSize; i++) {
            this.elem[i] = null;
        }
    }
}

测试方法的正确性

package com.github.sqlist;


public class TestDemo1 {
    public static void main(String[] args) {
        MySequenceImpl mySequence = new MySequenceImpl();

        for (int i = 0; i < 10; i++) {
            mySequence.add(i,i);
        }
        System.out.println("在最大值10的范围内插入数据:");
        mySequence.display();
        System.out.println();

        for (int i = 10; i < 20; i++) {
            mySequence.add(i,i);
        }
        System.out.println("扩容:");
        mySequence.display();
        System.out.println();

        System.out.println("随机位置插入数据:");
        mySequence.add(9,"list");
        mySequence.display();
        System.out.println();

        System.out.println("search查找一个数据:"+mySequence.search("list"));
        System.out.println("contains查找一个数据:"+mySequence.contains("list"));
        System.out.println();

        System.out.println("查找某一个位置对应的值:"+mySequence.getPos(9));
        System.out.println();

        System.out.println("删除一个数据:"+mySequence.remove(8));
        mySequence.display();
        System.out.println();

        System.out.println("得到顺序表的长度:"+mySequence.size());
    }
}

测试结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java实现顺序表的操作

本文链接: https://www.lsjlt.com/news/163185.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现顺序表的操作
    本文实例为大家分享了Java实现顺序表的基本操作,供大家参考,具体内容如下 静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。 接口 package com.gith...
    99+
    2024-04-02
  • Java实现顺序表的操作详解
    目录一、顺序表是什么二、自定义异常空引用异常下标越界异常三、顺序表的方法顺序表的实现获取顺序表长度顺序表是否为空顺序表是否为满打印顺序表末尾新增元素指定位置新增元素判断是否包含某元素...
    99+
    2024-04-02
  • Java 3:顺序表的操作
    顺序表常见操作有插入、删除、查找、修改。一、插入:1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移...
    99+
    2023-01-31
    顺序 操作 Java
  • 如何使用Java实现顺序表的操作
    小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟...
    99+
    2023-06-28
  • C++顺序表的基本操作实现
    目录1.顺序表的定义2.顺序表上基本操作的实现完整代码如下:总结1.顺序表的定义 线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相...
    99+
    2024-04-02
  • C语言怎么实现顺序表的操作
    这篇文章主要介绍了C语言怎么实现顺序表的操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言怎么实现顺序表的操作文章都会有所收获,下面我们一起来看看吧。线性表线性表(linear list)是n个具有相同特...
    99+
    2023-06-30
  • C语言实现顺序表的全操作详解
    目录线性表顺序表顺序表接口实现1.顺序表初始化2.顺序表空间增容3.顺序表打印4.尾插数据5.尾删数据6.头插数据7.头删数据8.在pos下标处插入数据9.删除pos下标处数据10....
    99+
    2024-04-02
  • Java数据结构的顺序表怎么操作
    这篇文章主要介绍了Java数据结构的顺序表怎么操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java数据结构的顺序表怎么操作文章都会有所收获,下面我们一起来看看吧。前言线性表(linear list)是n个...
    99+
    2023-06-29
  • Java线性表的顺序表示及实现
    目录前言一、什么是顺序表?二、顺序表的实现1. 准备工作2. 获取顺序表的元素个数3. 获取顺序表当前的容量4. 顺序表是否为空5. 在指定索引位置添加元素6. 在顺序表末尾添加元素...
    99+
    2024-04-02
  • 怎么用Java实现顺序表
    这篇文章给大家分享的是有关怎么用Java实现顺序表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、什么是顺序表?顺序表就是按照顺序存储方式存储的线性表,该线性表的结点按照逻辑次序依次存放在计算机的一组连续的存储...
    99+
    2023-06-27
  • Java实现顺序表和链表结构
    目录前言:顺序表定义:实现方法:代码实现:链表定义:分类:实现方法:代码实现:顺序表 & 链表总结前言: 线性表(linear list)是n个具有相同特性的数据元素的有限序...
    99+
    2024-04-02
  • Java顺序表和链表如何实现
    这篇“Java顺序表和链表如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java顺序表和链表如何实现”文章吧。1. ...
    99+
    2023-07-04
  • C语言实现顺序表的基本操作的示例详解
    目录一、认识顺序表1.线性表2.顺序表的概念及结构二、顺序表的基本操作(接口实现)1.初始化顺序表2.打印顺序表3.尾插4.尾删5.扩容6.头插7.头删8.任意位置插入9.任意位置删...
    99+
    2022-11-13
    C语言顺序表基本操作 C语言顺序表操作 C语言顺序表
  • Java如何实现一个顺序表
    这篇文章主要介绍Java如何实现一个顺序表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现一个顺序表接口实现定义一个MyArrayList类,在类中实现以下函数public class MyAr...
    99+
    2023-06-14
  • Java数据结构之顺序表的实现
    目录前言一、顺序表1.1 什么是顺序表二、简单实现顺序表2.1 创建顺序表2.2 打印顺序表2.3 获取顺序表长度2.4 在 pos 位置新增元素2.5 判定是否包含某个元素2.6 ...
    99+
    2024-04-02
  • C++中顺序表操作的示例代码
    编写程序,实现顺序表的下列功能: 从键盘输入数据建立一个顺序表输出该顺序表往顺序表中插入数据从顺序表中删除数据给定数据,进行查找,给出查找成功和失败信息 C++代码: #includ...
    99+
    2022-11-13
    C++顺序表操作 C++ 顺序表
  • C语言实现串的顺序存储表示与基本操作
    本文实例为大家分享了C语言实现串的顺序存储表示与基本操作代码,供大家参考,具体内容如下 1、串的三种存储表示 串,即:字符串。要注意的是,C语言中是没有字符串数据类型的,而将其作为一...
    99+
    2024-04-02
  • Java线性表的顺序表示及实现方法
    本篇内容介绍了“Java线性表的顺序表示及实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是顺序表?顺序表是在计算机内存中以数...
    99+
    2023-07-02
  • Java实现一个顺序表的完整代码
    实现一个顺序表 接口实现 定义一个MyArrayList类,在类中实现以下函数 public class MyArrayList { } 数组的定义 public ...
    99+
    2024-04-02
  • Java 精炼解读数据结构的顺序表如何操作
    目录前言一、什么是顺序表顺序表的概念及结构创建顺序表打印顺序表获取顺序表长度在pos位置新增元素判定是否包含某个元素查找某个元素对应的位置获取 pos 位置的元素给 pos 位置的元...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作