Java?精煉解讀數(shù)據(jù)結(jié)構(gòu)的順序表如何操作
前言
線性表(linear list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實(shí)際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見 的線性表:順序表、鏈表、棧、隊(duì)列、字符串... 線性表在邏輯上是線性結(jié)構(gòu),也就說是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上存儲(chǔ) 時(shí),通常以數(shù)組和鏈?zhǔn)浇Y(jié)構(gòu)的形式存儲(chǔ)。
一、什么是順序表
順序表的概念及結(jié)構(gòu)
順序表是用一段物理地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲(chǔ)。在數(shù)組上完成數(shù)據(jù)的增刪查改
其實(shí)就是一個(gè)數(shù)組。那為什么還要寫一個(gè)順序表,直接用數(shù)組不就好了?不一樣的,寫到類里面就可以面向?qū)ο蟆?/p>
創(chuàng)建順序表

public class MyArrayList {
public int[] elem;//數(shù)組
public int usedSize;//數(shù)據(jù)的有效個(gè)數(shù)
public MyArrayList(){
this.elem = new int[10];
}
}打印順序表


打印結(jié)果:

因?yàn)閐isplay是根據(jù)usedsize打印的, usedsize沒賦值所以什么也不打印。
獲取順序表長度

在pos位置新增元素
在順序表里面插入元素的時(shí)候所插入的位置的前面一定是存放了元素的,
畫圖分析:

代碼如下:
// 在 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é)果:

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

查找某個(gè)元素對(duì)應(yīng)的位置
// 查找某個(gè)元素對(duì)應(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é)果:

刪除你想要?jiǎng)h除的元素
//刪除第一次出現(xiàn)的關(guān)鍵字key
public void remove(int toRemove) {
if(isEmpty()){
System.out.println("順序表為空");
return;
}
int index = search(toRemove);//查找要?jiǎng)h除元素對(duì)應(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ù)。通過簡單例題的方式加深對(duì)順序表的理解。上述就是今天的內(nèi)容,有任何疑問的話可以隨時(shí)私信我,文章哪里出現(xiàn)了問題我都會(huì)積極改正,也希望大家能更快的掌握自己想要的知識(shí),讓我們一起加油?。。。。?/p>
到此這篇關(guān)于Java 精煉解讀數(shù)據(jù)結(jié)構(gòu)的順序表如何操作的文章就介紹到這了,更多相關(guān)Java 數(shù)據(jù)結(jié)構(gòu)的順序表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)現(xiàn)線性表的鏈?zhǔn)酱鎯?chǔ)
- java實(shí)現(xiàn)線性表及其算法
- java 線性表接口的實(shí)例詳解
- java線性表的存儲(chǔ)結(jié)構(gòu)及其代碼實(shí)現(xiàn)
- Java數(shù)據(jù)結(jié)構(gòu)順序表從零基礎(chǔ)到精通進(jìn)階
- Java實(shí)現(xiàn)順序表和鏈表結(jié)構(gòu)
- Java實(shí)現(xiàn)順序表的操作
- Java數(shù)據(jù)結(jié)構(gòu)之順序表篇
- Java中ArrayList與順序表的概念與使用實(shí)例
- Java線性表的順序表示及實(shí)現(xiàn)
相關(guān)文章
Java ArrayList 實(shí)現(xiàn)實(shí)例講解
ArrayList是基于數(shù)組實(shí)現(xiàn)的,是一個(gè)動(dòng)態(tài)數(shù)組,其容量能自動(dòng)增長,類似于C語言中的動(dòng)態(tài)申請(qǐng)內(nèi)存,動(dòng)態(tài)增長內(nèi)存。這篇文章主要介紹了java ArrayList 實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2016-11-11
SpringBoot開發(fā)存儲(chǔ)服務(wù)器實(shí)現(xiàn)過程詳解
這篇文章主要為大家介紹了SpringBoot開發(fā)存儲(chǔ)服務(wù)器實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
springboot druid數(shù)據(jù)庫配置密碼加密的實(shí)現(xiàn)
Druid是阿里開發(fā)的數(shù)據(jù)庫連接池,本文主要介紹了springboot druid數(shù)據(jù)庫配置密碼加密的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
Java實(shí)現(xiàn)百度AOI數(shù)據(jù)的解析與轉(zhuǎn)換
Java作為一種成熟且廣泛應(yīng)用的編程語言,具有跨平臺(tái)、面向?qū)ο蟆踩愿叩忍攸c(diǎn),非常適合用于開發(fā)各種類型的應(yīng)用程序,本文為大家整理了基于Java的AOI數(shù)據(jù)解析與轉(zhuǎn)換的實(shí)現(xiàn)方法,需要的可以參考下2025-02-02
Java Date類常用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在JDK1.0中,Date類是唯一的一個(gè)代表時(shí)間的類,但是由于Date類不便于實(shí)現(xiàn)國際化,所以從JDK1.1版本開始,推薦使用Calendar類進(jìn)行時(shí)間和日期處理。這里簡單介紹一下Date類的使用,需要的朋友可以參考下2017-05-05
Idea之沒有網(wǎng)絡(luò)的情況下創(chuàng)建SpringBoot項(xiàng)目的方法實(shí)現(xiàn)
本文主要介紹了Idea之沒有網(wǎng)絡(luò)的情況下創(chuàng)建SpringBoot項(xiàng)目的方法實(shí)現(xiàn),文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09

