Java_顺序表分享

Java_顺序表分享

先看代码后看分享

1.顺序表代码

下面是顺序表完整代码和注释
package ShunXuBiao;

import java.util.Arrays;
import java.util.Scanner;

public class SequentialList {
    private int[] sxb;//声明顺序表
    private int length = 0 ;//定义长度
    Scanner input = new Scanner(System.in); //从键盘输入
    private int Kxg = input.nextInt();//根据不同情况定义一个可以进行随时修改的样本空间最大值

    public SequentialList() {
        this.sxb = new int[Kxg];//定义顺序表样本空间最大值
        this.length = 0;//初始化元素个数为0
    }

    public void add(int a) {
        sxb[length] = a;//给样本空间的第一个位置赋值
        length++;//每存入一个元素,长度就+1
        if (length > Kxg - 1)//如果位置超出空间样本最大值,就抛出异常
            throw new RuntimeException("构造线性表,长度越界");
    }

    public int insert(int b, int c) {//插入位置用b代表,插入元素用c代表
        if (length == sxb.length)//元素长度恰好与样本空间最大值一致
            throw new RuntimeException("位置已满,不可插入新的元素");//发生上溢
        if (b < 1 || b > length + 1)
            throw new RuntimeException("位置异常");//插入位置不在长度范围之内
        for (int j = length; j >= b; j--) {//从元素的最大处开始往前逐个后移
            sxb[j] = sxb[j - 1];//从插入位置以后的元素全部都向后移一位
        }
        sxb[b - 1] = c;//将插入元素给到位置b处
        return length;
    }

    public int locate(int d) {//查询数值用d代表
        int result = 0;//定义一个可以存储查询数值位置的值
        for (int i = length - 1; i >= 0; i--) {//从元素的最大处开始往前逐个查找
            if (sxb[i] == d) {//当该下标取到的值与查询值一致时
                result = i + 1;//将该查询数值的位置给到result
                break;
            }
        }
        return result;//返回记录的该位置
    }

    public int delete(int f) {//删除的数值用f代表
        if (f < 1 || f > length + 1) {
            throw new RuntimeException("位置异常");//插入位置不在长度范围之内
        }
        int BaoLiu = sxb[f - 1];//做一个删除元素的记录备份
        for (int j = f - 1; j < length+1; j++) {
            sxb[j] = sxb[j + 1];
        }//让删除位置的元素成为他后一位置的元素
        length--;//删除后长度-1
        return BaoLiu;//返回该记录该删除的元素
    }

    public int getResult(int e) {//位置用e代表
        return sxb[e - 1];//输出位置e的元素
    }

    public String getSxb() {
        return (Arrays.toString(sxb));
    }//用于得到顺序表

    public int getLength() {
        return length+1;
    }//用于得到长度数值
}
class ShiJian{//实践类
    public static void main(String[] args) {
        System.out.println("请您确定样本空间的最大值:");
        int[] sxb = {1,3,5,7,9};//定义我要加入顺序表的数组
        SequentialList sj = new SequentialList();
        //将sxb数组中所有的元素依次加入到顺序表中
        for (int i =0;i

2.什么是顺序表

顺序表1是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中

3.理解顺序表

首先我们要去理解一下顺序表,我们做一个正常的插入,如下图所示
Java_顺序表分享_第1张图片
当顺序表满了之后,在进行插入,便会溢出,如下图所示

Java_顺序表分享_第2张图片
当你想删除某个位置的元素时,如下图所示Java_顺序表分享_第3张图片

4.顺序表的实现

4.1声明并添加第一个元素

public class SequentialList {
    private int[] sxb;    //声明顺序表
    private int length = 0 ;    //定义长度
    Scanner input = new Scanner(System.in);    //从键盘输入
    private int Kxg = input.nextInt();    //根据不同情况定义一个可以进行随时修改的样本空间最大值

    public SequentialList() {
        this.sxb = new int[Kxg];    //定义顺序表样本空间最大值
        this.length = 0;    //初始化元素个数为0
    }
}

4.2做一个插入

public int insert(int b, int c) {    //插入位置用b代表,插入元素用c代表
        if (length == sxb.length)    //元素长度恰好与样本空间最大值一致
            throw new RuntimeException("位置已满,不可插入新的元素");    //发生上溢
        if (b < 1 || b > length + 1)
            throw new RuntimeException("位置异常");    //插入位置不在长度范围之内
        for (int j = length; j >= b; j--) {    //从元素的最大处开始往前逐个后移
            sxb[j] = sxb[j - 1];    //从插入位置以后的元素全部都向后移一位
        }
        sxb[b - 1] = c;    //将插入元素给到位置b处
        return length;
   }

4.3做一个查询

public int locate(int d) {    //查询数值用d代表
   int result = 0;    //定义一个可以存储查询数值位置的值
   for (int i = length - 1; i >= 0; i--) {    //从元素的最大处开始往前逐个查找
       if (sxb[i] == d) {    //当该下标取到的值与查询值一致时
           result = i + 1;    //将该查询数值的位置给到result
           break;
       }
   }
   return result;    //返回记录的该位置
}

4.4做一个删除

public int delete(int f) {    //删除的数值用f代表
    if (f < 1 || f > length + 1) {
        throw new RuntimeException("位置异常");    //插入位置不在长度范围之内
    }
    int BaoLiu = sxb[f - 1];    //做一个删除元素的记录备份
    for (int j = f - 1; j < length+1; j++) {
        sxb[j] = sxb[j + 1];
    }    //让删除位置的元素成为他后一位置的元素
    length--;    //删除后长度-1
    return BaoLiu;    //返回该记录该删除的元素
}

4.5做一些输出

 public int getResult(int e) {    //位置用e代表
     return sxb[e - 1];    //输出位置为e的元素
 }

 public String getSxb() {
     return (Arrays.toString(sxb));
 }    //用于得到顺序表

 public int getLength() {
     return length+1;
 }    //用于得到长度数值

4.5实现调用类

class ShiJian{//实践类
    public static void main(String[] args) {
        System.out.println("请您确定样本空间的最大值:");
        int[] sxb = {1,3,5,7,9};    //定义我要加入顺序表的数组
        SequentialList sj = new SequentialList();
        //将sxb数组中所有的元素依次加入到顺序表中
        for (int i =0;i

以上就是本文全部内容,如果对你有帮助,可以随手点个赞,这对我真的很重要


  1. 来自搜狗百科:https://baike.sogou.com/v7855...顺序表

你可能感兴趣的:(Java_顺序表分享)