線性表
(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...