本節課介紹了單鏈表的操作實現細節,介紹了靜態鏈表。
?
鏈表帶頭的作用:對鏈表進行操作時,可以對空表、非空表的情況以及 對首元結點進行統一處理,編程更方便。
下面給出帶頭的單鏈表實現思路:
?
按下標查找:
判斷非法輸入,當 1 <?=i <=?n 時,i 的值是合法的。
p = L ->?next; j = 1;
while ( p && j < i ) { ?p = p ?->next; ++j; }
return?
?
按值查找:
?p = L1 ->?next;
?while ( p && p ->data!=key) ? ? ? ? ?p = p ->?next;
return;
?
插入:
判斷
查找
創建
插入
?
刪除:
查找
刪除
釋放內存
?
靜態鏈表
對于線性鏈表,也可用一維數組來進行描述。這種描述方法便于在沒有指針類型的高級程序設計語言中使用鏈表結構。
這種存儲結構,仍需要預先分配一個較大的空間,但在作為線性表的插入和刪除操作時不需移動元素,僅需修改指針,故仍具有鏈式存儲結構的主要優點。
?
表示:
#define MAXSIZE 1000 ? ? ?/ /鏈表的最大長度
typedef ?struct{ ? ? ?
? ? ElemType data; ? ? ? ?
? ? int cur;
}component, ?SLinkList[MAXSIZE];
?
過程:
?
?
?
?
?