資料結構總結之鍊錶(一)

2021-09-12 14:47:51 字數 1602 閱讀 5962

線性表

(1)順序儲存結構(陣列,必須連續空間)

優點: 不需要為表中元素之間的邏輯結構新增額外的儲存空間

可以快速的訪問表中任一位置的元素

缺點: 插入和刪除操作需要移動大量元素

當線性表長度變化比較大時,難以確定儲存空間的容量

易造成儲存空間的 「碎片 」

(2)鏈式儲存結構(連續或不連續,由資料域和指標域組成,稱為結點)

頭指標與頭節點異同:

頭指標具有標識作用,常以頭指標冠以鍊錶的名字 ,無論鍊錶是否為空,頭指標均不為空,頭指標是鍊錶的必要元素。

頭結點是為了統一操作而設立的,放在第一元素的結點之前,其資料域一般毫無意義(可存放鍊錶的長度),有了頭節點,對在第一元素節點前插入結點和刪除結點,其操作與其他結點操作統一,頭結點不一定是鍊錶必要元素。

鍊錶的插入與刪除

插入:頭插法,讓頭指標指向新結點,始終讓新結點處於第一位置

```

p=(linklist)malloc(sizeof(node));

p->data = rand()%100 + 1;//隨機數生成100以內的數字為新結點的資料域

p->next = (*l)->next;

(*l)->next = p; //頭指標指向新結點

```

尾插法:新的結點始終插在終端結點的後面

r = *l;                 //*r為指向尾部的結點

p=(linklist)malloc(sizeof(node));

p->data = rand()%100 + 1; //隨機數生成100以內的數字為新結點的資料域

r->next = p ;

r = p;

r->next = null; //表示當前鍊錶結束

單鏈表整表刪除:free(p); p = p -> next;單鏈表結構與順序儲存結構優缺點:

儲存方式:

順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素;

單鏈表採用鏈式儲存結構,用一組任意的儲存的單元存放線性表的元素;

時間效能:

查詢: 順序儲存o(1) 單鏈表o(n)

插入刪除: 順序儲存結構需要平均移動表長一半的元素,時間為o(n);單鏈表在找出某位置的指標後,插入和刪除僅為o(1);

空間效能:

順序儲存結構需要預分配儲存空間,分大造成浪費,分小發生上溢。 單鏈表不需要分配儲存空間,元素個數不受限制。

還有一些鍊錶 :靜態鍊錶,迴圈鍊錶(終端結點的指標端由空指標改為指向頭結點),雙向鍊錶,

資料結構之鍊錶 一

線性表分為順序儲存結構和鏈式儲存結構2種。順序儲存結構的特點 任何乙個元素都可以進行隨即訪問,訪問速度高。但不適合瀕繁的插入和刪除操作。鏈式儲存結構 鍊錶 不可以隨即訪問元素。但適合頻繁的插入和刪除操作。乙個靜態鍊錶的例子 include struct node typedef struct nod...

資料結構之鍊錶(一)

很多人,一接觸到資料結構就難懂,就說有難度,還有就說,鍊錶有什麼用?今天我就詳細的說下,這個鍊錶有什麼用。一 鍊錶介紹 1 鍊錶有位址不連續的結點序列,必須通過指標相互連線。2 鍊錶的分類 1 單向線性鍊錶 每個節點中除了儲存資料結構內容以外,還需要儲存指向下乙個節點的指標,叫做後指標。最後乙個節點...

資料結構之鍊錶 一

線性表分為順序儲存結構和鏈式儲存結構2種。順序儲存結構的特點 任何乙個元素都可以進行隨即訪問,訪問速度高。但不適合瀕繁的插入和刪除操作。鏈式儲存結構 鍊錶 不可以隨即訪問元素。但適合頻繁的插入和刪除操作。乙個靜態鍊錶的例子 include struct node typedef struct nod...