91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現一個順序表

發布時間:2021-04-15 10:01:59 來源:億速云 閱讀:161 作者:小新 欄目:開發技術

這篇文章主要介紹Java如何實現一個順序表,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

實現一個順序表

接口實現

定義一個MyArrayList類,在類中實現以下函數

public class MyArrayList {
   
}

數組的定義

public int[] elem;//定義一個整形數組
    public int usize;//usize表示數組的長度
    public MyArrayList(){
        this.elem = new int[5];
}

打印順序表

for循環打印順序表的每一位

public void display(){
        for (int i = 0; i < this.usize; i++) {
            System.out.print(this.elem[i]+" ");
        }
        System.out.println();
    }

在pos位置新增元素

先定義一個isFull函數判斷順序表是否滿了,滿了返回true,沒滿則返回false

public boolean isFull(){
        if (this.usize == this.elem.length){
            return true;
        }
        return false;
    }

將pos位置后的元素后移,順序表順序表長度增加一位

public void add(int pos, int data){
        //判斷順序表是否滿了
        if (isFull()){
            System.out.println("順序表已滿");
            //擴容
            this.elem = Arrays.copyOf(this.elem,2*this.usize);
        }
        //判斷pos的合法性
        if (pos < 0 || pos > this.usize){
            System.out.println("pos位置不合法");
            return;
        }
        //將pos位置后的數字后移
        for (int i = this.usize-1; i >= pos; i--) {
            this.elem[i+1] = this.elem[i];
        }
        this.elem[pos] = data;
        this.usize++;
    }

判定是否包含某個元素

public boolean contains(int key){
        for (int i = 0; i < this.usize; i++) {
            if (this.elem[i] == key){
                return true;
            }
        }
        return false;
    }

查找某個對應元素的位置

返回它的位置

public int search(int key){
        for (int i = 0; i < this.usize; i++) {
            if (this.elem[i] == key){
                return i;
            }
        }
        return -1;
    }

獲取pos位置的元素

定義一個isEmpty函數判斷順序表是否為空

public boolean isEmpty(){
        return this.usize == 0;
    }
public int getPos(int pos){
        //判斷順序表是否為空
        if (isEmpty()){
            return -1;
        }
        //判斷pos 位置是否合法
        if (pos < 0 || pos >= this.usize){
            return -1;
        }
        return this.elem[pos];
    }

給pos位置的元素設為value 更新為新的數字

 public void setPos(int pos,int value){
        //判斷順序表是否為空
        if (isEmpty()){
            return;
        }
        //判斷pos位置是否合法
        if (pos < 0 || pos >= this.usize){
            return;
        }
        this.elem[pos] = value;
    }

刪除第一次出現的關鍵字key

查找到關鍵字,從關鍵字所在的位置開始到順序表結束每一項前移,覆蓋掉關鍵字,長度減少一位

  public void remove(int key){
        int index= search(key);
        if (key == -1){
            System.out.println("關鍵字不存在");
            return;
        }
        for (int i = key; i < this.usize-1; i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usize--;
    }

獲取順序表長度

  public int size(){
        return this.usize;
    }

清空順序表

順序表長度直接為0

public void clear(){
        this.usize = 0;
    }

實現這個順序表

定義一個測試類,測試這些函數的輸出

public class TestDemo {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        //給這個順序表寫入1,2,3,4,5
        myArrayList.add(0,1);
        myArrayList.add(1,2);
        myArrayList.add(2,3);
        myArrayList.add(3,4);
        myArrayList.add(4,5);
        //打印這個順序表
        myArrayList.display();
        //判定5這個元素是否在該順序表中
        System.out.println(myArrayList.contains(5));
        //查找5這個元素 返回它的位置
        System.out.println(myArrayList.search(5));
        //獲取3位置的元素
        System.out.println(myArrayList.getPos(3));
        //將4位置的元素重新賦值為9
        myArrayList.setPos(4,9);
        //打印新的順序表
        myArrayList.display();
        //刪除第一次出現的元素4
        myArrayList.remove(4);
        //打印新的順序表
        myArrayList.display();
        //獲取順序表的長度
        System.out.println(myArrayList.size());
        System.out.println("清空");
        //清空順序表
        myArrayList.clear();
        //打印新的順序表
        myArrayList.display();
    }
}

得到結果:

Java如何實現一個順序表

順序表的優缺點

優點:順序表查找方便,知道這個元素的位置就可以直接找到這個元素。
缺點:擴容一般成2倍增長,會有一定的空間浪費。

以上是“Java如何實現一個順序表”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

区。| 东丽区| 四平市| 南川市| 周口市| 青阳县| 昔阳县| 陆良县| 怀远县| 文山县| 慈溪市| 加查县| 扎赉特旗| 万宁市| 齐齐哈尔市| 陵川县| 旌德县| 县级市| 静安区| 武义县| 京山县| 平江县| 防城港市| 田林县| 重庆市| 丹巴县| 日照市| 西平县| 鄂尔多斯市| 金山区| 民和| 宿松县| 大洼县| 盐山县| 石泉县| 柳州市| 临沭县| 巩留县| 永安市| 康定县| 丽水市|