文章目錄
- 前言
- 順序表和鏈表 是 陣列 與 類和物件 的一種整合,順序表和鏈表 是 資料結構的基礎,非常重要,
- 線性表
- 順序表(一個面向物件的陣列)
- 概念及結構
- 順序表一般可以分為:
- 順序表講解圖
- 1(準備作業)
- 2(new物件)
- 3(順序要實作的功能)
- 4(列印順序表)
- 5 (獲取順序表的有效長度)
- 6(在pos位置增添元素)
- 代碼實作(在pos位置增添元素)
- 此時我們已經寫好了 列印順序表、獲取順序表的有效長度、在 pos 位置新增元素 的順序表功能,我們來測驗一下,
- 效果附圖
- 7 ( 判斷是否包含某個元素 )
- 8 (查找某個元素對應的位置)
- 7 和 8 效果圖
- 9(獲取下標為pos的元素)
- 9 附圖
- 10(給 pos 位置的元素設為 value)
- 10 附圖
- 11 (洗掉第一次出現的關鍵字key)
- 11 附圖
- 11 效果圖
- 11.2(特殊情況)
- 12 清空順序表
- 附圖
- 附上程式總圖
- 呼叫方
- 實作者(順序表)
- 本文結束
前言
1. 順序表和鏈表,都屬于資料結構的一部分,
2. 資料結構:C的資料結構 和 JAVA 的資料結構,有什么不一樣?
資料結構 只是一個單獨的學科,和語言沒有關系,
語言的不同,只是決定了實作同一種邏輯的方法不同而已,
3. 資料結構:邏輯非常嚴謹的一門學科,要向學號資料結構
必須做到兩點 :1.多畫圖 , 2.多寫代碼 (別抄)
?
順序表和鏈表 是 陣列 與 類和物件 的一種整合,順序表和鏈表 是 資料結構的基礎,非常重要,
?
線性表
線性表(linear list)是n個具有相同特性的資料元素的有限序列, 線性表是一種在實際中廣泛使用的資料結構,
常見的線性表:順序表、鏈表、堆疊、佇列、字串...
線性表在邏輯上是線性結構,也就說是連續的一條直線,但是在物理結構上并不一定是連續的,線性表在物理上存盤時,通常以陣列和鏈式結構的形式存盤

?
順序表(一個面向物件的陣列)
概念及結構
順序表是用一段物理地址連續的存盤單元依次存盤資料元素的線性結構,一般情況下采用陣列存盤,在陣列上完成資料的增刪查改,
可以這么去理解 順序表 是一個面向物件的陣列,但是一個陣列是不能自己面向物件,我們需要提供一些方法,來對陣列進行增刪查改,
那么把陣列這些方法(只用寫一次) 和 陣列 作為屬性 放到一個類里面,將來我用這個類去new物件的時候,
通過這個物件我們可以去呼叫這些方法,去操作陣列,這不就是面向物件嘛,
簡單來說 順序表 就是 對一個陣列進行增刪查改,
一個普通陣列,我們也可以創建一些方法區操作它,但它始終面向不了物件,而且我們每次都需要為陣列寫操作方法,
順序表一般可以分為:
靜態順序表:使用定長陣列存盤,
動態順序表:使用動態開辟的陣列存盤
靜態順序表適用于確定知道需要存多少資料的場景.
靜態順序表的定長陣列導致N定大了,空間開多了浪費,開少了不夠用
相比之下動態順序表更靈活, 根據需要分配動態的空間大小
 
順序表講解圖
1(準備作業)

?
2(new物件)

?
3(順序要實作的功能)

?
4(列印順序表)

?
5 (獲取順序表的有效長度)

?
6(在pos位置增添元素)

代碼實作(在pos位置增添元素)
public void add(int pos, int data) {
// 1.
if(pos<0||pos>this.usedSize){
System.out.println("pos的位置不合法!");
return;
}
// 2.
dilatation();
// 3.
for (int i = this.usedSize-1; i >= pos; i--) {
this.array[i+1]=this.array[i];
}
// 4.
this.array[pos] = data;
this.usedSize++;
}
// 擴容
public void dilatation(){
if(this.array.length == this.usedSize){
this.array = Arrays.copyOf(this.array,this.array.length*2);
}
}
此時我們已經寫好了 列印順序表、獲取順序表的有效長度、在 pos 位置新增元素 的順序表功能,我們來測驗一下,
public class SequentialAndLinkedLists {
public static void main(String[] args) {
MySequentialList mySequentialList = new MySequentialList();
// 通過 在 pos 位置新增元素 的功能 來給 陣列賦值
mySequentialList.add(0,1);
mySequentialList.add(1,2);
mySequentialList.add(2,3);
mySequentialList.add(3,4);
mySequentialList.add(4,5);
mySequentialList.display();// 列印顯示
System.out.println(mySequentialList.size());// 列印有效元素個數
}
}
效果附圖

?
7 ( 判斷是否包含某個元素 )

?
8 (查找某個元素對應的位置)

?
7 和 8 效果圖


?
9(獲取下標為pos的元素)

9 附圖


?
10(給 pos 位置的元素設為 value)

10 附圖




?
11 (洗掉第一次出現的關鍵字key)

至于為什么是 usedSize-1,是為了防止越界,(如果順序表示滿的情況,當 你回圈走到 最后一個元素時,此時的 array[i+1],會訪問不屬于順序表的空間,從而導致越界訪問)
11 附圖

11 效果圖

?
11.2(特殊情況)

?
12 清空順序表

附圖

?
附上程式總圖
呼叫方

實作者(順序表)

本文結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/348357.html
標籤:java
下一篇:Spring MVC獲得請求資料
