Java 实现在顺序表末尾插入一个元素

这篇具有很好参考价值的文章主要介绍了Java 实现在顺序表末尾插入一个元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、思路

1.因为我们是用数组实现的顺序表,因此首先要保证数组有足够的空间来进行插入元素.
2.如果数组满了就需要将数组扩容,没满就开始插入.
3.当前数组中的元素个数就是每一次要插入的末尾位置的下标.
4.定义一个 usedSize 来表示当前的元素个数.
5.插入的时候就是往 usedSize 下标插入一个元素.
6.每一次成功插入后,就给元素个数加一,也就是 usedSize 加一.


二、图解

Java 实现在顺序表末尾插入一个元素
当前的 data 就是要插入的元素,末尾位置指的是紧挨着最后一个元素的位置,而不是数组的最后一个位置,在当前情况下,末尾位置就是 5 下标的位置。

上述图片展示的是插入一个新元素前的情况,可以看到此时数组中有 5 个元素,usedSize 的值就是 5,也就是说,我要插入的位置的下标就是当前的 usedSize 的下标,也就是 5 下标。


Java 实现在顺序表末尾插入一个元素
上述是插入后的图解,可以看到此时的 data 元素占据了 5 下标的位置。

如果此时我要再插入一个新元素,因为此时的元素个数变为了 6 ,因此插入的位置虽然还是 usedSize 下标,但是由 5 下标变为了 6 下标。

下图展示的再次插入一个新元素的情况。

Java 实现在顺序表末尾插入一个元素
鉴于以上,足以证明 usedSize 的值,也就是当前的元素个数即是要插入的末尾位置的下标。


三、如何判断数组当前的空间是否满了

求出当前 数组长度顺序表长度(元素个数),之后再拿它们两个比较,如果元素个数大于或者等于数组长度,此时就说明数组空间满了,就需要扩容了。

写一个 size() 方法用来求当前顺序表长度。

public int size() {
    // 直接返回元素个数
    return this.usedSize;
}


然后使用下面语句求出数组的长度。

this.elem.length


将它们两个比较就可以判断出当前的空间是不是满了。

可以写一个方法来判断空间是不是满的。

 public Boolean isFull() {
     // 如果顺序表长度大于或者等于数组的长度就是满了
     //if (size() >= this.elem.length) {
         // 此时为满了
            //return true;
     //}
     // 此时为不满
     //return false;

     // 简化的写法
     return size() >= this.elem.length; // 根据返回的真假来判断是否满了
 }


返回的结果是 true 就表示空间满了需要扩容;如果是 false 就表示还没满。


扩容操作

Java 实现在顺序表末尾插入一个元素

以上就是空间满了的情况,接下里讲解扩容操作

 this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length);


直接通过以上语句来将数组空间扩大为原来的 2 倍。

Java 实现在顺序表末尾插入一个元素
使用 Arrays.copyOf 来扩容, elem 是数组名;2 表示的是扩大 2 倍;elem.length 求的是数组长度。


四、代码

import java.util.Arrays;

class ArrayList {
    //初始化数组、元素个数
    public int[] elem; // 未初始化的数组
    public int usedSize; // 记录元素个数
    public static final int DEFAULT_SIZE = 10;
    
    // 构造方法
    public ArrayList() {
        // 初始化数组元素个数为 10 个
        this.elem = new int[DEFAULT_SIZE];
    }

    // 求顺序表的长度
    public int size() {
        // 直接返回元素个数
        return this.usedSize;
    }

    // 判断是不是空间满了的方法
    public Boolean isFull() {
        // 如果顺序表长度大于或者等于数组的长度就是满了
        //if (size() >= this.elem.length) {
            // 此时为满了
            //return true;
        //}
        // 此时为不满
       //return false;

        // 简化的写法
        return size() >= this.elem.length; // 根据返回的真假来判断是否满了
    }

    // 在顺序表末尾位置插入一个元素 data
    public void add(int data) {
        // 首先要判断空间是不是满了
        if (isFull()) {
            // 此时满了,要扩容 - 扩容为原来的 2 倍
            this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length);
        }

        // 没满就开始插入操作 usedSize 位置就是末尾的下标
        this.elem[this.usedSize] = data;
        // 元素个数加1
        this.usedSize++;
    }

    // 打印当前顺序表中所有的元素以便于观察结果,这并不是顺序表中的操作!!!
    public void disPlay() {
        for (int i = 0; i < this.usedSize; i++) {
            // 输出的元素之间加上空格
            System.out.print(this.elem[i] + " ");
        }
    }
}

public class MyArrayList {

    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();

        // 测试在顺序表末尾插入一个元素的方法
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        // 打印当前的顺序表中的元素
        arrayList.disPlay();
    }
}


Java 实现在顺序表末尾插入一个元素
根据输出结果,可以看到成功插入了元素。文章来源地址https://www.toymoban.com/news/detail-466322.html

到了这里,关于Java 实现在顺序表末尾插入一个元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包