首頁  >  文章  >  Java  >  Java資料結構的順序表怎麼操作

Java資料結構的順序表怎麼操作

王林
王林轉載
2023-05-12 20:22:04809瀏覽

    前言

    線性表(linear list)是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表:順序表、鍊錶、堆疊、佇列、字串... 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物理上儲存 時,通常以數組和鍊式結構的形式儲存。

    一、什麼是順序表

    順序表的概念及結構

    順序表是用一段物理位址連續的儲存單元依序儲存資料元素的線性結構,一般情況下採用數組儲存。在陣列上完成資料的增刪查改 

     其實就是一個陣列。那為什麼還要寫一個順序表,直接用數組不就好了?不一樣的,寫到類別裡面就可以面向對象。

    建立順序表

    Java資料結構的順序表怎麼操作

    public class MyArrayList {
       public int[] elem;//数组
       public int usedSize;//数据的有效个数
     
       public MyArrayList(){
           this.elem = new int[10];
       }
    }

    列印順序表

    Java資料結構的順序表怎麼操作

    ## 列印結果:

    Java資料結構的順序表怎麼操作

    因為display是根據usedsize印製的, usedsize沒賦值所以什麼都不印。

    取得順序表長度

    Java資料結構的順序表怎麼操作

    在pos位置新增元素

    在順序表裡面插入元素的時候所插入的位置的前面一定是存放了元素的,

    畫圖分析:

    Java資料結構的順序表怎麼操作

    #程式碼如下:

    // 在 pos 位置新增元素
        public void add(int pos, int data) {
           if(pos < 0 || pos > usedSize){
               System.out.println("pos位置不合法");
               return;
           }
           if(isFull()){
               this.elem = Arrays.copyOf(this.elem,this.elem.length*2);
           }
            for (int i = this.usedSize-1; i >=pos ; i--) {
                this.elem[i+1] = this.elem[i];
            }
            this.elem[pos] = data;
            
            this.usedSize++;
            
        }
     
        public boolean isFull(){
           return this.usedSize == this.elem.length;
        }

    列印結果:

    Java資料結構的順序表怎麼操作

    判定是否包含某個元素

    // 判定是否包含某个元素
        public boolean contains(int toFind) {
            for (int i = 0; i < this.usedSize; i++) {
                if (this.elem[i] == toFind) {
                    return true;
                }
            }
            return false;
        }

    列印結果:

    Java資料結構的順序表怎麼操作

    找出某個元素對應的位置

     // 查找某个元素对应的位置
        public int search(int toFind) {
            for (int i = 0; i <this.usedSize ; i++) {
                if(this.elem[i] == toFind){
                    return i;
                }
            }
           return -1; 
       }

    列印結果:

    Java資料結構的順序表怎麼操作

    取得pos 位置的元素

     // 获取 pos 位置的元素
        public int getPos(int pos) {
           if(pos < 0 || pos > this.usedSize){
               System.out.println("pos位置不合法");
               return -1;//所以,这里说明一下,业务上的处理,这里不考虑
           }
           if (isEmpty()){
               System.out.println("顺序表为空");
               return -1;
           }
           return this.elem[pos];
     
        }
        public boolean isEmpty(){//判断为不为空的情况下
           return this.usedSize == 0;
        }

    列印結果:

    Java資料結構的順序表怎麼操作

    為pos 位置的元素設為value

       // 给 pos 位置的元素设为 value
        public void setPos(int pos, int value) {
            if (pos < 0 || pos > this.usedSize) {
                System.out.println("pos位置不合法");
                return ;
            }
            if (isEmpty()) {
                System.out.println("顺序表为空");
                return;
            }
             this.elem[pos] = value;
        }
        public boolean isEmpty() {//判断为不为空的情况下
            return this.usedSize == 0;
        }

     列印結果:

    Java資料結構的順序表怎麼操作

    刪除你想要刪除的元素

    //删除第一次出现的关键字key
    public void remove(int toRemove) {
       if(isEmpty()){
           System.out.println("顺序表为空");
           return;
       }
       int index = search(toRemove);//查找要删除元素对应的位置
       if(index == -1){
           System.out.println("没有你要找到数字");
           return;
       }
     
        for (int i = index; i <this.usedSize-1 ; i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usedSize--;
     
    }

    #列印結果:

    Java資料結構的順序表怎麼操作#

    以上是Java資料結構的順序表怎麼操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除