當前位置:
首頁 > 知識 > 數據結構-線性表-順序表的代碼詳解

數據結構-線性表-順序表的代碼詳解

數據結構中的一大重點 線性表:

一。順序表

數據存儲是連續的,有多少數據開闢多少儲存空間,所以不存在資源浪費

查找速度快,但是在增刪數據的時候可能會移動大量數據,所以增刪操作速度慢

二。鏈表

數據存儲是離散的,所以數據的存儲不連續,無規則,可能存在空間大於數據數目,浪費資源

但是增加跟刪除元素的時候不影響其他元素,速度快

根據劃分條件不同:

鏈表結構可分為單向鏈表,雙向鏈表 循環鏈表 非循環鏈表

三。這篇文章詳解順序表!!!!!!代碼在最後附上!!!!

1.代碼部分 一包 一介面二類 在學習過程中可以對著左側行序號更改代碼

數據結構-線性表-順序表的代碼詳解

2.介面類List

數據結構-線性表-順序表的代碼詳解

3.順序表類SequenceList

數據結構-線性表-順序表的代碼詳解

數據結構-線性表-順序表的代碼詳解

數據結構-線性表-順序表的代碼詳解

數據結構-線性表-順序表的代碼詳解

3.測試類

數據結構-線性表-順序表的代碼詳解

4.運行結果

數據結構-線性表-順序表的代碼詳解

5.代碼部分附上:

List類:

package LinearList;

//定義一個線性表介面

public interface List {

//定義線性表的長度

public int Size();

//判斷線性表是否為空

public boolean IsEmpty();

//插入元素

public void Insert(int index,Object object) throws Exception;

//刪除元素

public void Delete(int index) throws Exception;

//查找元素

public Object FindData(int index) throws Exception;

}

SequenceList類

package LinearList;

public class SequenceList implements LinearList.List{

//設置順序表默認的最大長度

final int DefaultSize = 20;

//設置順序表的最大長度

int Maxsize;

//設置順序表的當前長度

int size;

//存儲對象的數組(因為不知道存儲的是哪種類型的數據,所以選擇object)

Object OjbArr[];

//初始化順序表

public void Init(int size) {

//設置順序表長度

Maxsize = size;

//設置完之後將順序表當前的長度size設置為0,因為還未輸入數據

this.size = 0;

//根據長度實例化對象數組數目

OjbArr = new Object[size];

}

//構造函數,默認最大長度下的構造函數和用戶輸入最大長度下的構造函數

//構造函數中創建該表

public SequenceList() {

// TODO Auto-generated constructor stub

Init(DefaultSize);

}

public SequenceList(int size) {

Init(size);

}

@Override

//返回順序表的長度

public int Size() {

// TODO Auto-generated method stub

return size;

}

@Override

//返回對順序表的判斷是否為空

public boolean IsEmpty() {

// TODO Auto-generated method stub

//通過判斷當前順序表的size是否為0 以此判斷該順序表是否為空

return size == 0;

}

@Override

public void Insert(int index, Object object) throws Exception {

// TODO Auto-generated method stub

//判斷該表是否已經存滿

if(size>=Maxsize) {

throw new Exception("該表已經存滿");

}

//判斷插入數據的位置是否合法

if(index<size||index>Maxsize) {

throw new Exception("插入位置不合法");

}

//若上述進程沒有被打斷,則證明該插入操作是沒問題的,繼續正常進行

//當前長度++

size++;

//移動元素讓出位置使該元素插入

//移動的原理是將所插位置元素以後的元素全部後移,讓出這個位置給新來元素

for(int j=size;j>=index;j--) {

OjbArr[size+1] = OjbArr[size];

}

//元素加入index位置

OjbArr[index] = object;

}

@Override

public void Delete(int index) throws Exception {

// TODO Auto-generated method stub

//判斷順序表是否為空,為空沒法進行刪除操作

if(IsEmpty()) {

throw new Exception("該順序表為空");

}

//判斷是否有該位置

if(index<0||index>size) {

throw new Exception("沒有該位置");

}

//元素前移頂掉index處的元素

for(int j=index;j<=size-1;j++){

OjbArr[j]=OjbArr[j+1];

}

//順序表長度--

size--;

}

@Override

public Object FindData(int index) throws Exception {

// TODO Auto-generated method stub

//判斷順序表是否為空,為空沒法進行查找操作

if(IsEmpty()) {

throw new Exception("該順序表為空");

}

//判斷是否有該位置

if(index<0||index>size) {

throw new Exception("沒有該位置");

}

return OjbArr[index];

}

}

測試類Test

package LinearList;

public class Test {

public static void main(String args[]) {

//創建一個順序表對象

SequenceList list = new SequenceList(20);

//為順序表插入數據

try {

//增加

list.Insert(0, 11);

list.Insert(1, 22);

list.Insert(2, 33);

list.Insert(3, 44);

//刪除

list.Delete(1);

//查找

for(int i=0;i<list.Size();i++) {

System.out.println("第"+i+"個元素為"+list.FindData(i));

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

壓縮解壓縮介紹以及運用
pc端通過拖放實現添加、刪除功能

TAG:程序員小新人學習 |