資料結構之順序表和煉表

2021-10-09 02:34:05 字數 1574 閱讀 4830

1.線性表

線性表(linear list)是n個具有相同特性的資料元素的有限序列。 線性表是一種在實際中廣泛使用的資料結構,常見的線性表:順序表、鍊錶、棧、佇列、字串…

線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物 理上儲存時,通常以陣列和鏈式結構的形式儲存。

2. 順序表

靜態順序表:使用定長陣列儲存。

動態順序表:使用動態開闢的陣列儲存。

動態順序表的簡單實現

typedef struct seqlist

seqlist;

// 基本增刪查改介面

void seqlistinit(seqlist* psl, size_t capacity);

void seqlistdestory(seqlist* psl);

void checkcapacity(seqlist* psl);

void seqlistpushback(seqlist* psl, sldatatype x);

void seqlistpopback(seqlist* psl);

void seqlistpushfront(seqlist* psl, sldatatype x);

void seqlistpopfront(seqlist* psl);

int seqlistfind(seqlist* psl, sldatatype x);

void seqlistinsert(seqlist* psl, size_t pos, sldatatype x);

void seqlisterase(seqlist* psl, size_t pos);

void seqlistremove(seqlist* psl, sldatatype x);

void seqlistmodify(seqlist* psl, size_t pos, sldatatype x);

void seqlistprint(seqlist* psl);

3. 鍊錶

鍊錶是一種物理儲存結構上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的 。

帶頭雙向迴圈鍊錶:結構最複雜,一般用在單獨儲存資料。實際中使用的鍊錶資料結構,都是帶頭雙向迴圈鍊錶。另外這個結構雖然結構複雜,但是使用**實現以後會發現結構會帶來很多優勢,實現反而簡單了

4. 順序表和煉表的區別與聯絡

在我學習的時候,老師舉了乙個很形象的例子

順序表:一白遮百醜

白:空間連續、支援隨機訪問

醜:中間或前面部分的插入刪除時間複雜度o(n)

增容的代價比較大。

鍊錶:一黑毀所有

胖黑:以節點為單位儲存,不支援隨機訪問

所有:任意位置插入刪除時間複雜度為o(1)

沒有增容問題,插入乙個開闢乙個空間。

資料結構之順序表和煉表的比較

線性表分為順序儲存和鏈式儲存兩種方式。順序表可以分為順序訪問,也可以隨機訪問,鍊錶只能從表頭順序訪問元素。例如在第i個位置上執行存或取的操作,順序表僅需一次訪問,而鍊錶則需從表頭開始依次訪問i次。採用順序儲存時,邏輯上相鄰的元素,對應的物理儲存位置也相鄰。而採用鏈式儲存時,邏輯上相鄰的元素,物理儲存...

資料結構之線性表(順序表 鍊錶)

線性表是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。線性表的邏輯結構簡單,便於實現和操作。線性表的特徵 1 線性表是乙個序列 2 n 0時,線性表是乙個空表 3 線性表中的第乙個元素無前驅,最後乙個元素無後繼,其他元素有且只有乙個前驅和後繼。4 線性表是有長度的,其長度就是元素...

資料結構《順序鍊錶》

include using namespace std template class sqlist template sqlist sqlist int m template sqlist sqlist template void sqlist createlist int n template t...