《Java数据结构入门》顺序表详解

本文详细介绍了如何手动实现Java顺序表,包括数据结构的定义、功能接口的实现、扩容、判断空满、增删查改等操作,通过实例演示了如何使用MyArraysList类进行操作,并提供了Test类的测试代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 大家好,我是小鱼儿

目录

顺序表介绍:

顺序表的手动实现

顺序表功能接口概览

基本功能的实现

四大功能

一、增加数据 

二、删除数据

三、查找数据

四、修改数据

 总代码

MyArraysList.java

 Test.java


顺序表介绍:

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

🍑顺序表一般可以分为:

  1. 静态顺序表:使用定长数组存储元素。(本篇主要围绕静态顺序表展开)
  2. 动态顺序表:使用动态开辟的数组存储。


顺序表的手动实现

📝本文将创建两个Java文件:MyArraysList.java用于顺序表的实现,Test.java用于顺序表的各个接口的测试

顺序表功能接口概览

import java.util.Arrays;

public class MyArraysList {
    private int[] elem;
    private int usedSize; // 默认值是0
    private static final int DEFAULT_SIZE = 4; // 定义为常量,更加安全

    // 初始化顺序表
    public MyArraysList() {
        this.elem = new int[4];
    }
    // 对顺序表进行扩容
    public void expand() {}

    //判断当前顺序表是否为空
    public boolean isempty() {}

    // 判断当前顺序表是不是满了
    public boolean isFull() {}

    // 打印顺序表
    public void display() {}


    // 新增元素,默认在数组最后新增
    public void add(int data) {}

    // 新增元素,在数组最前面新增
    public void addHead(int data){}

    // 在 pos 位置新增元素
    public void addPos(int pos, int data) {}


    // 删除表头元素
    public void removeHead() {}

    // 删除表尾元素
    public void removeTail() {}

    // 指定下标元素的删除
    public void removePos(int pos) {}

    //删除第一次出现的关键字key
    public void remove(int toRemove) {}


    // 判定是否包含某个元素
    public boolean contains(int toFind) { return true; }

    // 查找某个元素对应的位置
    public int indexOf(int toFind) { return -1; }
    
    // 获取 pos 位置的元素
    public int getPos(int pos) { return -1; }
    
    // 给 pos 位置的元素设为 value
    public void setPos(int pos, int value) {}
    
    // 获取顺序表长度
    public int size() { return 0; }
    
    // 清空顺序表
    public void clear() {}
}


基本功能的实现

🌰对顺序表进行扩容

// 对顺序表进行扩容
    public void expand() {
        this.elem = Arrays.copyOf(this.elem, this.usedSize * 2);
        System.out.println("已经成功扩容至原来的两倍"); // 给用户提醒
    }

 

🌰判断顺序表是否为空 

     /**
     * 判断当前顺序表是否为空
     * @return true->空的,false->还没空
     */
    public boolean isempty() {
        if (this.usedSize == 0) {
            return true;
        }
        else return false;
    }

 

🌰判断顺序表是否已满

    /**
     * 判断当前顺序表是不是满了
     * @return true->满了,false->还没满
     */
    public boolean isFull() {
        if (this.usedSize == this.elem.length) return true;
        else return false;
    }

🌰打印顺序表

// 打印顺序表
// 打印的第一种方式
    public void display() {
        for (int i = 0; i < this.elem.length; i++) {
            System.out.print(this.elem[i] + " ");
        }
        System.out.println();
    }
// 打印的第二种方式,用Arrays.toString直接打印
    public void display() {
       System.out.println(Arrays.toString(this.elem));
    }

🌰获取顺序表的有效长度

 // 获取顺序表的有效长度
public int size() {
    return this.usedSize;
}

 🌰清空顺序表

 // 清空顺序表
    public void clear() {
        for (int i = 0; i < this.usedSize; i++) {
            this.elem[i] = 0;
        }
        this.usedSize = 0; // 注意有效数组长度也要清零
    }

评论 78
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小鱼儿哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值