一、線性鍊錶的特點和邏輯結構
1、特點:考慮到順序表插入和刪除操作需要移動大量的元素,線性鍊錶可以不連續儲存,原本由陣列相對儲存空間所規定的兩個元素的關係,現在由鍊錶的指標所代替,理解這裡指標所起的關鍵作用至關重要。
2、邏輯結構
如上圖,乙個鍊錶由不必在記憶體中相連的結構構成;每乙個結構包含表元素和指向該元素後繼結構的指標。該指標被稱為next指標,最後乙個next指標指向null;
該結構叫做結點(node):由資料域和指標域構成
3、頭節點和頭指標
如圖,l指向的結點即為頭結點,l即為頭指標:
頭節點:
二、線性鍊錶的常見操作
1、線性鍊錶用結構指標描述
typedef
int elemtype;
//定義結點型別
typedef
struct node
node,
*linkedlist;
2、單鏈表的初始化
//1、單鏈表的初始化
linkedlist init_linklist()
2、單鏈表的建立,包含頭插法和尾插法
//2、單鏈表的建立,頭插法建立單鏈表
linkedlist create_head_linklist()
return l;
}//3、單鏈表的建立,尾插法建立單鏈表
linkedlist create_tail_linklist()
r->next =
null
;return l;
}
3、單鏈表的插入,在鍊錶的第i個位置插入x的元素
關鍵操作:
p->next = pre->next;
//把pre所指向的傳遞給p
pre->next = p;
//把指向p的指標給pre,即pre現在指向了新結點p
linkedlist insert_linklist
(linkedlist l,
int i,elemtype x)
4、單鏈表的刪除,在鍊錶中刪除值為x的元素
關鍵操作:
pre-next = p->next;
//即pre->next = pre->next->next;逃過了pre-next,x相當於刪除了
linkedlist delete_linklist
(linkedlist l,elemtype x)
pre->next = p->next;
//刪除操作,將其前驅next指向其後繼。
free
(p);
return l;
}
5、整表刪除
/*單鏈表的整表刪除*/
clear_linklist
(linkedlist *l)
l->next =
null
;return l;
}
抓住主要矛盾,搞清楚指標的操作原理是理解的關鍵; 資料結構 線性表之單鏈表
線性表 亦作順序表 是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存結構 順序儲存結構,即儲存單元在一段連續的位址上儲存,常見的陣列就是順序儲存結構的線性表 鏈式儲存結構,即儲存單元...
資料結構複習(二)線性表(2)單鏈表
單鏈表定義 實現typedef struct lnodelnode,linklist 優缺點 初始化不帶頭結點 帶頭結點 bool initlist linklist l 帶頭結點頭結點不儲存元素,頭結點之後的結點才開始儲存元素 bool initlist linklist l l next nul...
資料結構C C 線性表和單鏈表
在vs2005下面測試通過.最基本的 code include stdafx.h include include stdio.h include using namespace std typedef int type typedef struct lnodelnode,linklist linkl...