線性表的順序儲存結構(順序表示和實現)

2021-09-25 15:15:18 字數 1937 閱讀 3776

順序儲存結構的線性表稱作順序表。在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。

順序儲存結構是儲存結構型別中的一種,該結構是把邏輯上相鄰的結點儲存在物理位置上相鄰的儲存單元中,結點之間的邏輯關係由儲存單元的鄰接關係來體現。

實現順序儲存結構的方法是使用陣列。陣列把線性表的資料元素儲存在一塊連續位址空間的記憶體單元中,這樣線性表中邏輯上相鄰的資料元素在物理儲存位址上也相鄰。資料元素間的邏輯上的前驅、後繼邏輯關係就表現在資料元素的儲存單元的物理前後位置上。

順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料(不考慮c/c++語言中陣列需指定大小的情況),結點之間的邏輯關係沒有占用額外的儲存空間。採用這種方法時,可實現對結點的隨機訪問,即每乙個結點對應乙個序號,由該序號可以直接計算出來結點的儲存位址。但順序儲存方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。

優點:隨機訪問表中元素、儲存密度大。缺點:插入和刪除操作需要移動元素。

**示例如下 :

介面**

public inte***ce sequence

實現介面的**

public class sequenceimpl implements sequence

/*** 頭部插入

*/public void topinsert(object obj)

listarray[0] = obj;

size ++;

} /**

* 中間插入

*/@override

public void insert(int index,object obj)

ensurecapacity();

//i 代表空間下標

for (int i = size; i > index; i--)

listarray[index] = obj;

size ++;

} /**

* 尾部插入

*/public void foninsert(object obj)

/*** 刪除

*/@override

public boolean delete(int index)

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

listarray[size-1] = null;

size --;

return true;

} @override

public object get(int index)

return listarray[index];

} @override

public int size()

//判斷是否超出長度

private void ensurecapacity()

int newcap = listarray.length + listarray.length /2;

object newarray = new object[newcap];

for (int i = 0; i < listarray.length; i++)

this.listarray = newarray;

} /**

* 輸出

插入元素示意

刪除元素示意

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性表的順序儲存結構 順序表

線性表的順序儲存結構 順序表一.在c c 語言中,借助陣列型別來實現順序表,也就是說,用陣列存放線性表的元素及其邏輯關係,陣列的基本型別就是線性表中元素的的型別,陣列大小 即陣列上界 下界 1 要大於等於線性表的長度,否則該陣列不能存放對應線性表的所有元素。所以當線性表長度小於陣列大小時,該陣列中會...

線性表的順序儲存結構 順序表

什麼是線性表?線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度,長度為0的表稱為空表。什麼是順序表?線性表的順序儲存結構稱為順序表。順序表是用一段位址連續的儲存單元依次儲存線性表的資料元素,因為線性表中每個元素的型別相同,通常用一維陣列來實現線性...