java實作順序表的增刪查改
什麼是順序表?它是一種什麼結構?
順序表是用一段實體位址連續的儲存單元依序儲存的線性結構,一般情況下會採用陣列儲存。在數組上完成資料的增刪查改。
(學習影片分享: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入門教學
以上是java實作順序表的增刪查改的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
