溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

發(fā)布時(shí)間:2022-03-15 09:13:36 來(lái)源:億速云 閱讀:150 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    前言

    線(xiàn)性表(linear list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 線(xiàn)性表是一種在實(shí)際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見(jiàn) 的線(xiàn)性表:順序表、鏈表、棧、隊(duì)列、字符串... 線(xiàn)性表在邏輯上是線(xiàn)性結(jié)構(gòu),也就說(shuō)是連續(xù)的一條直線(xiàn)。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線(xiàn)性表在物理上存儲(chǔ) 時(shí),通常以數(shù)組和鏈?zhǔn)浇Y(jié)構(gòu)的形式存儲(chǔ)。

    一、什么是順序表

    順序表的概念及結(jié)構(gòu)

    順序表是用一段物理地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線(xiàn)性結(jié)構(gòu),一般情況下采用數(shù)組存儲(chǔ)。在數(shù)組上完成數(shù)據(jù)的增刪查改 

     其實(shí)就是一個(gè)數(shù)組。那為什么還要寫(xiě)一個(gè)順序表,直接用數(shù)組不就好了?不一樣的,寫(xiě)到類(lèi)里面就可以面向?qū)ο蟆?/p>

    創(chuàng)建順序表

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    public class MyArrayList {
       public int[] elem;//數(shù)組
       public int usedSize;//數(shù)據(jù)的有效個(gè)數(shù)
     
       public MyArrayList(){
           this.elem = new int[10];
       }
    }

    打印順序表

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

     打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    因?yàn)閐isplay是根據(jù)usedsize打印的, usedsize沒(méi)賦值所以什么也不打印。

    獲取順序表長(zhǎng)度

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    在pos位置新增元素

    在順序表里面插入元素的時(shí)候所插入的位置的前面一定是存放了元素的,

    畫(huà)圖分析:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    代碼如下:

    // 在 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;
        }

    打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    判定是否包含某個(gè)元素

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

    打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    查找某個(gè)元素對(duì)應(yīng)的位置

     // 查找某個(gè)元素對(duì)應(yīng)的位置
        public int search(int toFind) {
            for (int i = 0; i <this.usedSize ; i++) {
                if(this.elem[i] == toFind){
                    return i;
                }
            }
           return -1; 
       }

    打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    獲取 pos 位置的元素

     // 獲取 pos 位置的元素
        public int getPos(int pos) {
           if(pos < 0 || pos > this.usedSize){
               System.out.println("pos位置不合法");
               return -1;//所以,這里說(shuō)明一下,業(yè)務(wù)上的處理,這里不考慮
           }
           if (isEmpty()){
               System.out.println("順序表為空");
               return -1;
           }
           return this.elem[pos];
     
        }
        public boolean isEmpty(){//判斷為不為空的情況下
           return this.usedSize == 0;
        }

    打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    給 pos 位置的元素設(shè)為 value

       // 給 pos 位置的元素設(shè)為 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;
        }

     打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    刪除你想要?jiǎng)h除的元素

    //刪除第一次出現(xiàn)的關(guān)鍵字key
    public void remove(int toRemove) {
       if(isEmpty()){
           System.out.println("順序表為空");
           return;
       }
       int index = search(toRemove);//查找要?jiǎng)h除元素對(duì)應(yīng)的位置
       if(index == -1){
           System.out.println("沒(méi)有你要找到數(shù)字");
           return;
       }
     
        for (int i = index; i <this.usedSize-1 ; i++) {
            this.elem[i] = this.elem[i+1];
        }
        this.usedSize--;
     
    }

    打印結(jié)果:

    Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作

    關(guān)于“Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Java數(shù)據(jù)結(jié)構(gòu)的順序表怎么操作”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI