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...