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 元素不在該線性表中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM