首先讓我們來看下順序表的定義:
與其直接前驅ai-1
及直接後繼ai+1
的儲存位置相鄰。順序儲存的線性表也成為順序表(sequential list)。
順序錶類seqlist提供線性表基於順序儲存結構的一種實現,它有兩個私有成員變數table和n,table是乙個存放元素的物件陣列;n為線性表長度,n≤table.length。seqlist宣告如下,它實現了線性表的介面llist。
package datastructure.linearlist;
import datastructure.linearlist.llist;
public class seqlistimplements llist//順序錶類,實現線性表介面
public seqlist() //指定空表的預設容量
public boolean isempty() //判斷順序表是否為空,若空返回true
public int length() //返回順序表長度
public e get(int index) //返回index(初值為0)位置的物件,若序號無效,返回null
return null;
} public e set(int index,e element) //設定index位置的物件為element,若操作成功,放回原物件,否則返回null
return null;
} public boolean add(int index,e element) //在index位置插入element物件,若操作成功返回true,不能插入null
if(this.n == table.length) //若陣列滿,則需要擴充順序表容量
} if(index < 0) //下標容錯
if(index > this.n)
for(int j = this.n-1;j >= index;j--) //元素後移,平均移動n/2
this.table[index] = element;
this.n++;
return true;
} public boolean add(e element) //在順序表最後插入element物件
public e remove(int index) //移去index位置的物件,若操作成功,則返回被移去的物件,否者返回null
this.table[this.n - 1] = null;
this.n--;
return old;
} return null;
} public void clear() //清空順序表
this.n=0;
} }
public string tostring() //返回顯示所有元素的字串,形式為(,)
str += this.table[this.n - 1].tostring();
} return str + ")";
} }
順序表是一種隨即訪問結構,訪問任何乙個元素的get()、set()方法的時間複雜度是o(1)。
對順序表進行插入或刪除操作是,演算法所花費的時間主要用於移動元素。在等概率情況下,插入乙個元素平均需要移動一半的元素,時間複雜度為o(n)。同裡,刪除乙個元素的時間複雜度亦為o(n)。
綜上所述,順序表具有下列特點:
①:元素的物理儲存順序直接反映表中元素的邏輯順序,可以隨機訪問元素。
②:插入和刪除的操作效率很低。每插入或刪除乙個元素,可能需要移動大量元素,其平均移動次數是順序表長度的一半。再者,陣列容量不可更改,存在因容量小造成資料溢位,或因容量過大造成記憶體資源浪費的問題。解決資料溢位的方法是,申請另乙個更大容量的陣列,並進行陣列元素複製,但插入操作效率很低。
順序表是一種隨即訪問結構,訪問任何乙個元素的get()、set()方法的時間複雜度是o(1)。
對順序表進行插入或刪除操作是,演算法所花費的時間主要用於移動元素。在等概率情況下,插入乙個元素平均需要移動一半的元素,時間複雜度為o(n)。同裡,刪除乙個元素的時間複雜度亦為o(n)。
綜上所述,順序表具有下列特點:
①:元素的物理儲存順序直接反映表中元素的邏輯順序,可以隨機訪問元素。
②:插入和刪除的操作效率很低。每插入或刪除乙個元素,可能需要移動大量元素,其平均移動次數是順序表長度的一半。再者,陣列容量不可更改,存在因容量小造成資料溢位,或因容量過大造成記憶體資源浪費的問題。解決資料溢位的方法是,申請另乙個更大容量的陣列,並進行陣列元素複製,但插入操作效率很低。
線性表 順序儲存結構之 順序表
順序表 用順序方法儲存的線性表也叫做順序表 如果乙個線性表用一組連續的儲存單元依次儲存線性表的資料元素,那麼這個表就是順序表。類似陣列 資料元素在計算機內 物理位置相鄰 例 如果用 address ai 表示資料元素ai的儲存位置,l表示資料元素占用的儲存單元,則 address ai addres...
線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性表的順序儲存結構 順序表
線性表的順序儲存結構 順序表一.在c c 語言中,借助陣列型別來實現順序表,也就是說,用陣列存放線性表的元素及其邏輯關係,陣列的基本型別就是線性表中元素的的型別,陣列大小 即陣列上界 下界 1 要大於等於線性表的長度,否則該陣列不能存放對應線性表的所有元素。所以當線性表長度小於陣列大小時,該陣列中會...