串列(List) 撰寫一串列程式
基礎觀念 陣列 串列 繼承 抽象類別abstract class 介面interface
陣列 應用於串列、矩陣、多項式。 陣列的大小於宣告時固定,記憶體空間配置好所決定的大小不改變。 陣列的索引值從0開始。
串列 串列的大小依使用需要可變動其所佔記憶體空間的大小。
陣列實際應用於串列 當串列利用陣列方式完成,如圖說明:
抽象類別(abstract class) 抽象類別的繼承為 is a 關係 將類別extends 抽象的宣告 { ... abstract 傳回型態 方法名稱(參數); } 抽象的宣告 修飾子 class 類別名稱 extends 抽象類別名稱 { 傳回型態 方法名稱(參數){方法的敘述主體;} } 延伸出來實體
介面(interface) 介面的繼承為 like a 關係 將介面實作implement 介面的宣告 修飾子 interface 介面名稱 { 資料型態 變數名稱=初值;//常數 傳回型態 方法名稱(參數);//抽象方法 } 介面的宣告 public或private 修飾子 class 類別名稱 implements 介面名稱 { 傳回型態 方法名稱(參數){方法的敘述主體;} //實作方法 } 實作出來實體
撰寫串列程式碼 使用介面interface 實作implements出實體化 主程式
介面 – 串列的操作1 介面的方法: 新增元素到串列尾端 讀取元素 寫入 元素插入到串列中 void append(int element) int read(int position) 寫入 void write(int position, int value) 元素插入到串列中 void insert(int position, int element)
介面 – 串列的操作1 刪除元素 傳回串列的個數 印出串列的所有元素 int delete(int position) int sizeOfList() 印出串列的所有元素 void printList()
介面程式碼(list.java) public interface list { void append(int element); int read(int position); void write(int position, int value); void insert(int position, int element); int delete(int position); int sizeOfList(); void printList(); }
實作 類別名稱:myList 成員變數: 一維陣列: myArray[] 串列大小:listSize 延伸出來實體 public class myList implements list { int myArray[]; int listSize; ... } 延伸出來實體
實作 – 建構元 建構元設定初始值 public class myList implements list { int myArray[]; int listSize; int listIndex; public myList(int LSize, int arraySize) myArray=new int[arraySize+1];//多選告一個位置作暫存 listSize=arraySize; listIndex= Lsize; }
新增元素到串列尾端 (append) 把元素新增到串列尾端並不影響其他的串列元素 可以用listSize來決定新增的元素的位置 完成操作以後listIndex的值要加上1,因為串列多了一個元素。 myArray[listIndex] = element; listIndex++;
插入一個串列元素 (insert) 有時候可能需要將新元素插入到串列的特定位置,這時就要有個更複雜的插入動作。
插入一個串列元素 (insert)
刪除一個串列元素 (delete) 刪除一個串列元素,後面的串列元素要往前補 以下的例子把myArray[1]裡頭儲存的數字從串列中移除,所以後面的數字必須往前補到空出來的陣列位置上。
刪除一個串列元素 (delete)
讀取(read) 要從串列讀取資料,必須指定元素的位置。 由於串列元素是按先後順序不間斷地儲存在陣列中,所以串列元素在串列中的次序剛好就是該元素儲存在陣列上對應的索引。
寫入(write) 提供一個值,並指定接收這個值的串列位置 寫入同樣可以透過函式的呼叫來執行,或者直接在程式中將一個變數或常數的值直接透過索引存入到串列的正確位置。
列出所有串列元素(printList) 將串列中的元素一一地列印出來,用來列印出目前串列中的元素。串列元素的數目由listSize來決定。
輸入5比學生成績,並計算及平均 59, 98, 6, 7, 76
串列的主程式(testList.java)