您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java實現順序表增刪查改的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
什么是順序表?它是一種什么結構?
順序表是用一段物理地址連續的存儲單元依次存儲的線性結構,一般情況下采用數組存儲。在數組上完成數據的增刪查改。
順序表分為:
靜態順序表:使用定長數組存儲
動態順序表:使用動態開辟的數組存儲
靜態順序表適用于確定知道需要存多少數據的場景。
靜態順序表的定長數組導致N定大了,空間開多了浪費,開少了不夠用。
順序表實現
首先得給定一個順序表的長度,假如你要給列表插入元素,我們得先給0號位置插第一個數,如果0號位置沒有數,我們不能直接插在1號位置或是更后邊。如果0,1,2號位置都有數據,我們要往0號或1號位置插的話,這個時候得倒著遍歷順序表,讓前邊的數據往后挪一步。
增:
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函數在判斷順序表為滿時,如果滿了,直接跳出到打印函數。并不會報錯。此時增函數就寫好了。
查
//判定鏈表是否包含某個元素 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位置對應的數據,將新數據賦給它就好了
//修改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
刪
刪除指定的數據后,后邊的數據往前覆蓋就可以了
//刪除元素 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實現順序表增刪查改的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。