首頁 > 軟體

Java 精煉解讀資料結構的順序表如何操作

2022-03-14 19:01:35

前言

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

一、什麼是順序表

順序表的概念及結構

順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下采用陣列儲存。在陣列上完成資料的增刪查改 

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

建立順序表

public class MyArrayList {
   public int[] elem;//陣列
   public int usedSize;//資料的有效個數
 
   public MyArrayList(){
       this.elem = new int[10];
   }
}

列印順序表

 列印結果:

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

獲取順序表長度

在pos位置新增元素

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

畫圖分析:

程式碼如下:

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

列印結果:

判定是否包含某個元素

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

列印結果:

查詢某個元素對應的位置

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

列印結果:

獲取 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;
    }

列印結果:

給 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;
    }

 列印結果:

刪除你想要刪除的元素

//刪除第一次出現的關鍵字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 資料結構的順序表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com