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

溫馨提示×

溫馨提示×

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

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

java實現順序表增刪查改的方法

發布時間:2021-01-11 11:47:09 來源:億速云 閱讀:257 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關java實現順序表增刪查改的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

什么是順序表?它是一種什么結構?

順序表是用一段物理地址連續的存儲單元依次存儲的線性結構,一般情況下采用數組存儲。在數組上完成數據的增刪查改。

順序表分為:

靜態順序表:使用定長數組存儲
動態順序表:使用動態開辟的數組存儲

靜態順序表適用于確定知道需要存多少數據的場景。

靜態順序表的定長數組導致N定大了,空間開多了浪費,開少了不夠用。

順序表實現

首先得給定一個順序表的長度,假如你要給列表插入元素,我們得先給0號位置插第一個數,如果0號位置沒有數,我們不能直接插在1號位置或是更后邊。如果0,1,2號位置都有數據,我們要往0號或1號位置插的話,這個時候得倒著遍歷順序表,讓前邊的數據往后挪一步。

java實現順序表增刪查改的方法

增:

public class SepList {
    public int[] val;//定義數據
    public int size;//存放一個數據則讓size++;

    //構造方法  順序表大小
    public SepList(){
        this.val = new int[5];
    }
    //也可以往進傳大小
    public SepList(int ret){
        this.val = new int[ret];
    }

    //增加數據 得傳要插入的位置與對應位置的數據 就比如0號位置插10
    public void addVal(int pos,int val){
        //首先判斷順序表是否滿
        if(this.val.length == this.size) return;
        //其次得看看給的位置是否合法  pos不能小于0 也不能比如0號位置有數據 1號位置沒有數據  然后插在2號或者更后邊的位置
        if(pos < 0 || pos > this.size) return;
        //如果0 1 2 3位置都有數據,要往1號位置插,得讓后邊的位置往后移一步
        for(int i = this.size; i >= pos; i--){
            this.val[i + 1] = this.val[i];
        }
        //此時在給定位置插數據
        this.val[pos] = val;
        this.size++;
    }

    //打印鏈表
    public void disPlay(){
        for(int i = 0; i < this.size; i++){
            System.out.print(this.val[i] + " ");
        }
        System.out.println();//打印完后空行
    }

    public static void main(String[] args) {
        SepList myList = new SepList();//默認用5個元素
//        SepList myList = new SepList(10);//這時候順序表的大小是10
        myList.addVal(0,10);//在0位置插入第一個數據
        myList.disPlay();//打印

    }
}

//執行結果
10

如果要插入多個數據則調用方法即可
比如:

        myList.addVal(0,10);//第一次插入
        myList.addVal(1,20);
        myList.addVal(2,30);
        myList.addVal(3,40);
        myList.addVal(4,50);
        myList.disPlay();//打印
 
//執行結果
10 20 30 40 50

此時順序表已滿 如果再往進插入呢

        myList.addVal(0,10);//第一次插入
        myList.addVal(1,20);
        myList.addVal(2,30);
        myList.addVal(3,40);
        myList.addVal(4,50);
        myList.addVal(5,60);
        myList.addVal(6,70);
        myList.disPlay();//打印

//執行結果
10 20 30 40 50

為啥還是原來的,也沒有報錯。是因為進入add函數在判斷順序表為滿時,如果滿了,直接跳出到打印函數。并不會報錯。此時增函數就寫好了。

java實現順序表增刪查改的方法

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

  //查找某個元素對應的位置
  public int search(int toFind){
      for(int i = 0; i < this.size; i++){
          if(toFind == this.val[i]){
              return i;
          }
      }
      return -1;
  }

  //獲取pos位置的數據
  public int getPos(int pos){
      //首先判斷pos是否合法
      if(pos < 0 || pos > this.size) return -1;
      for(int i = 0; i < this.size; i++){
          if(this.val[i] == this.val[pos]){
              return this.val[pos];
          }
      }
      return -1;
  }

//調用方法 在這沒有粘貼主函數 你們一定要加上
      boolean flag1 = myList.contains(10);//判定元素
      boolean flag2 = myList.contains(60);
      System.out.println(flag1);
      System.out.println(flag2);
      int ret = myList.search(10);//查找
      int ret1 = myList.search(50);
      System.out.println(ret);
      System.out.println(ret1);
      int ret2 = myList.getPos(0);//獲取pos位置數據
      int ret3 = myList.getPos(4);
      System.out.println(ret2);
      System.out.println(ret3);

//執行結果
true
false
0
4
10
50

直接找到pos位置對應的數據,將新數據賦給它就好了

java實現順序表增刪查改的方法

 //修改pos位置的值
    public void remove(int pos,int val){
        if(pos < 0 || pos > this.size){
            return;
        } else {
            this.val[pos] = val;
        }
    }

        myList.remove(2,3);//2號位置改為3
        myList.remove(3,4);//3號位置改為4
        myList.disPlay();//打印

//執行結果
10 20 3 4 50

刪除指定的數據后,后邊的數據往前覆蓋就可以了

java實現順序表增刪查改的方法

 //刪除元素
    public void delVal(int key){
        int i,j = 0;
        //找到該位置
        for(i = 0; i < this.size; i++){
            if(this.val[i] == key){
                j = i;
                break;
            }
        }
        //刪除該位置數據,后邊數據往前覆蓋
        for(i = j; i < this.size - 1; i++){
            this.val[i] = this.val[i + 1];
        }
        this.size--;
    }

        myList.delVal(10);
        myList.delVal(50);
        myList.disPlay();//打印

//執行結果
20 30 40

感謝各位的閱讀!關于“java實現順序表增刪查改的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

扎兰屯市| 崇仁县| 淅川县| 合水县| 长海县| 敦煌市| 临西县| 昌宁县| 英德市| 宽城| 广宁县| 北辰区| 双桥区| 天镇县| 大埔县| 台北市| 荥经县| 会昌县| 团风县| 东莞市| 岳池县| 织金县| 加查县| 贵阳市| 达孜县| 贵港市| 沈丘县| 栖霞市| 保德县| 商南县| 若尔盖县| 东明县| 晋江市| 临海市| 连山| 云南省| 衢州市| 乃东县| 上高县| 临夏县| 休宁县|