美文网首页
线性表顺序存储结构Java实现

线性表顺序存储结构Java实现

作者: 格雷福豪 | 来源:发表于2019-08-12 16:09 被阅读0次

关键字

线性表、顺序存储结构

特点

无论是物理存储还是逻辑上都是一个接一个的

插入

先理解如何用Java构造一个顺序结构线性表。

  • Java中线性顺序,使用数组;但是因为创建数组对象时,必须指定长度,但是构造线性表的时候要一个不是满元素的数组(才能插入);并且能够知道它的已经使用的长度。
  • 为啥要知道它的已经使用的长度?原因是:当在进行元素移动时,移动的是已经放了的元素,进行a[j+1]=a[j]才不会出现脚标异常。

代码结构

  • InsertSeqList.java
  • LineInsertTest.java
    InsertSeqList构造线性表顺序结构类,LineInsertTest测试
    InsertSeqList:
public class InsertSeqList {

    /**
     * 初始化线性表空间
     */
    private static final int LIST_SIZE = 10;

    /**
     * 用来存放元素
     */
    private int[] data;

    /**
     * 当前表中实际使用长度
     */
    private int length;

    public InsertSeqList() {
    }

    /**
     * 构造一个未占满空间的数组
     *
     * @param data
     * @param length
     */
    public InsertSeqList(int[] data, int length) {
        this.data = data;
        this.length = length;
    }

    public int[] getData() {
        return data;
    }

    /**
     * 插入算法,其核心是从最后一位开始后移一位,至插入位
     * i为4,length为6;在数组的i位置替换掉node
     * @param insertSeqList 有空间的list
     * @param i             插入位置(相对于排位顺序来说)
     * @param node          插入的数数字
     */
    public void insertList(InsertSeqList insertSeqList, int i, int node) throws Throwable {
        //如果已使用的长度超出初始设定的长度,抛出异常
        if (insertSeqList.length == LIST_SIZE) {
            throw new Throwable("线性表已满");
        } else if (i > insertSeqList.length || i < 1) {
            throw new Throwable("插入位置不满足");
        } else if (i <= insertSeqList.length) {
            //从最后一位开始,最后一位后移一位,直到替换位置的元素后移一位(因为插入位置的元素也要移动,所以需要等号);
            //j也是相对于排位顺序的。那么对应数组中的位置就是a[j-1]位
            for (int j = insertSeqList.length - 1; j >= i - 1; j--) {
                data[j + 1] = data[j];
            }
            data[i - 1] = node;
        }
        //打印元素
        for (int a : insertSeqList.getData()
        ) {
            System.out.println(a);
        }
    }
}

LineInsertTest

public class LineInsertTest {
    public static void main(String[] args) {
        int[] a = new int[10];
        int use = 6;
        a[0]=0;
        a[1]=1;
        a[2]=2;
        a[3]=3;
        a[4]=4;
        a[5]=5;
        InsertSeqList insertSeqList = new InsertSeqList(a, use);
        try {
            insertSeqList.insertList(insertSeqList,3 ,12 );
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }
}

上面代码结果

在第三个位置插入12:


image.png

相关文章

  • 线性表的链式存储结构Java实现

    有了前面文章的铺垫:数据结构的基本理解线性表及其顺序存储结构的理解线性表的顺序存储结构java实现线性表链式存储就...

  • C++线性表的链式存储结构

    C++实现线性表的链式存储结构: 为了解决顺序存储不足:用线性表另外一种结构-链式存储。在顺序存储结构(数组描述)...

  • java数据结构与算法之顺序表与链表深入分析

    一、线性表的顺序存储设计与实现(顺序表) 1.1 顺序存储结构的设计原理概要 顺序存储结构底层是利用数组来实现的,...

  • 线性表的链式存储--单链表

    Java之线性表的链式存储——单链表 我们都知道,线性表的存储结构分为两种,顺序存储结构和链式存储结构,线性表的分...

  • 顺序表

    概念 使用顺序结构存储的线性表 实现

  • 数据结构 线性表 顺序存储结构

    本文主要讲解线性表顺序存储结构的实现 顺序表概念: 线性表的顺序存储结构指的是用一组地址连续的存储单元依次存储数据...

  • 数据结构之线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构,今天接着写线性表的链式存储结构 数据结构之线性表的顺序存储...

  • 数据结构和算法之一——线性表_2_顺序结构存储

    线性表存储结构分类线性表有两种物理存储结构:1)顺序存储结构;2)链式存储结构 顺序存储结构2.1定义:线性表的顺...

  • 线性表--顺序存储结构

    一、线性表的顺序存储结构 线性表有两种物理存储结构:顺序存储结构和链式存储结构。 顺序存储结构 ①定义:用一段地址...

  • 线性链表

    线性链表 线性表的顺序存储结构:顺序表线性表的链式存储结构:线性链表 线性表的链式存储所占存储空间大于顺序存储。 ...

网友评论

      本文标题:线性表顺序存储结构Java实现

      本文链接:https://www.haomeiwen.com/subject/cvpujctx.html