2、顺序表的实现(java代码)

1、这里实现了简单的顺序表的,为空判断、是否已满判断,插入、删除,查询元素下标等功能

public class Linear_List {
    private int[] arr;      //用来保存数据
    private int size;          //实际存入数据占用空间大小

    /**
     * 初始化线性表,声明数组大小
     *
     * @param initial_size:数组大小
     */
    public Linear_List(int initial_size) {
        if (initial_size >= 0) {
            this.arr = new int[initial_size]; //初始化数组
            this.size = 0;       //初始下标为0
        } else {
            System.out.println("你给的初始值: " + initial_size + "不能小于0");
        }
    }

    /**
     * 判断线性表满没有
     *
     * @return :真则满,假未满
     */
    public boolean isFull() {
        if (this.size == arr.length) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断线性表是否为空
     *
     * @return :真则空,假未空
     */
    public boolean isEmpty() {
        if (this.size == 0) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * 1、增加元素
     *
     * @param value :要插入的数据
     * @param index :插入的位置
     */
    public void addData(int value, int index) {
        if (isFull()) {
            System.out.println("线性表已满");
        } else if (index < 0 || index > arr.length) {
            System.out.println("插入的下标越界,您要插入的下标为:" + index);
        } else {
            for (int i = this.size - 1; i >= index; i--) {
                arr[i + 1] = arr[i];  //依次后移
            }
            arr[index] = value;
            this.size++;  //数组元素下标增加
        }
    }

    /**
     * 2、删除元素
     *
     * @param value :要删除的数
     */
    public void deleteData(int value) {
        int pos = find(value);
        if (pos == -1) {
            System.out.println("您要找的 " + value + " 元素不在该线性表中");
        } else {
            System.out.println("您要删除的 " + value + " 元素下标为:" + pos);
        }

        for (int j = pos; j <= this.size - 2; j++) { //这里-2,是因为找到的元素下标,要将后一个的冲掉前一个,会增加一个
            arr[j] = arr[j + 1];
        }
        this.size--;
    }

    /**
     * 3、查找元素下标
     * @param value :所要查找的元素
     * @return :返回下标
     */
    public int find(int value) {
        int pos = -1;
        if (isEmpty()) {
            System.out.println("线性表已空,没有可删除元素");
        } else {
            for (int i = 0; i <= this.size - 1; i++) {
                if (arr[i] == value) {
                    pos = i;
                }
            }
        }
        return pos;
    }

    /**
     * 打印线性表元素
     */
    public void print() {
        for (int i = 0; i <= this.size - 1; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        //初始化顺序表
        Linear_List linear_list = new Linear_List(10);
        for (int i = 0; i < 10; i++) {
            linear_list.addData(i + 1, i);
        }
        linear_list.print();

        //删除
        linear_list.deleteData(5);
        linear_list.print();

        //增加测试
        linear_list.addData(5, 1);
        linear_list.print();


         //查找元素下标
        int find_value = 15;
        int pos =linear_list.find(find_value);
        if (pos == -1) {
            System.out.println("您要找的 " + find_value + " 元素不在该线性表中");
        } else {
            System.out.println("您要找的 " + find_value + " 元素下标为:" + pos);
        }

    }
}

2、简单测试结果

1 2 3 4 5 6 7 8 9 10 
您要删除的 5 元素下标为:4
1 2 3 4 6 7 8 9 10
1 5 2 3 4 6 7 8 9 10
您要找的 15 元素不在该线性表中

 

猜你喜欢

转载自www.cnblogs.com/karrya/p/10884377.html
0条评论
添加一条新回复