Java?精煉解讀數(shù)據(jù)結(jié)構(gòu)的順序表如何操作
前言
線性表(linear list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見 的線性表:順序表、鏈表、棧、隊列、字符串... 線性表在邏輯上是線性結(jié)構(gòu),也就說是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上存儲 時,通常以數(shù)組和鏈式結(jié)構(gòu)的形式存儲。
一、什么是順序表
順序表的概念及結(jié)構(gòu)
順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪查改
其實就是一個數(shù)組。那為什么還要寫一個順序表,直接用數(shù)組不就好了?不一樣的,寫到類里面就可以面向?qū)ο蟆?/p>
創(chuàng)建順序表
public class MyArrayList { public int[] elem;//數(shù)組 public int usedSize;//數(shù)據(jù)的有效個數(shù) public MyArrayList(){ this.elem = new int[10]; } }
打印順序表
打印結(jié)果:
因為display是根據(jù)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; }
打印結(jié)果:
判定是否包含某個元素
// 判定是否包含某個元素 public boolean contains(int toFind) { for (int i = 0; i < this.usedSize; i++) { if (this.elem[i] == toFind) { return true; } } return false; }
打印結(jié)果:
查找某個元素對應(yīng)的位置
// 查找某個元素對應(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é)果:
獲取 pos 位置的元素
// 獲取 pos 位置的元素 public int getPos(int pos) { if(pos < 0 || pos > this.usedSize){ System.out.println("pos位置不合法"); return -1;//所以,這里說明一下,業(yè)務(wù)上的處理,這里不考慮 } if (isEmpty()){ System.out.println("順序表為空"); return -1; } return this.elem[pos]; } public boolean isEmpty(){//判斷為不為空的情況下 return this.usedSize == 0; }
打印結(jié)果:
給 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é)果:
刪除你想要刪除的元素
//刪除第一次出現(xiàn)的關(guān)鍵字key public void remove(int toRemove) { if(isEmpty()){ System.out.println("順序表為空"); return; } int index = search(toRemove);//查找要刪除元素對應(yīng)的位置 if(index == -1){ System.out.println("沒有你要找到數(shù)字"); return; } for (int i = index; i <this.usedSize-1 ; i++) { this.elem[i] = this.elem[i+1]; } this.usedSize--; }
打印結(jié)果:
總結(jié):
本文簡單介紹了數(shù)據(jù)結(jié)構(gòu)的順序表,如何創(chuàng)建順序表,順序表上如何操作數(shù)據(jù)。通過簡單例題的方式加深對順序表的理解。上述就是今天的內(nèi)容,有任何疑問的話可以隨時私信我,文章哪里出現(xiàn)了問題我都會積極改正,也希望大家能更快的掌握自己想要的知識,讓我們一起加油!?。。。?/p>
到此這篇關(guān)于Java 精煉解讀數(shù)據(jù)結(jié)構(gòu)的順序表如何操作的文章就介紹到這了,更多相關(guān)Java 數(shù)據(jù)結(jié)構(gòu)的順序表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot logback調(diào)整mybatis日志級別無效的解決
這篇文章主要介紹了springboot logback調(diào)整mybatis日志級別無效的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10Springboot+Spring Security實現(xiàn)前后端分離登錄認證及權(quán)限控制的示例代碼
本文主要介紹了Springboot+Spring Security實現(xiàn)前后端分離登錄認證及權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11SpringMVC打印請求參數(shù)和響應(yīng)數(shù)據(jù)最優(yōu)方案
項目中經(jīng)常需要打印http請求的參數(shù)和響應(yīng)數(shù)據(jù),本文給大家講解如何在SpringMVC打印請求參數(shù)和響應(yīng)數(shù)據(jù)最優(yōu)方案,感興趣的朋友跟隨小編一起看看吧2023-07-07Java實現(xiàn)經(jīng)典大富翁游戲的示例詳解
大富翁,又名地產(chǎn)大亨。是一種多人策略圖版游戲。參與者分得游戲金錢,憑運氣(擲骰子)及交易策略,買地、建樓以賺取租金。本文將通過Java實現(xiàn)這一經(jīng)典游戲,感興趣的可以跟隨小編一起學習一下2022-02-02java:程序包org.apache.ibatis.annotations不存在報錯解決
這篇文章主要給大家介紹了關(guān)于java:程序包org.apache.ibatis.annotations不存在報錯的解決方法,這個錯誤是我在直接導(dǎo)入springboot項目的時候報錯的,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04代理角色java設(shè)計模式之靜態(tài)代理詳細介紹
查了好多資料,發(fā)現(xiàn)還是不全,干脆自己整理吧,至少保證在我的做法正確的,以免誤導(dǎo)讀者,也是給自己做個記錄吧!2013-05-05