靜態(tài)鏈表基本操作(C語言實現(xiàn))詳解
上節(jié),我們初步創(chuàng)建了一個靜態(tài)鏈表,本節(jié)學習有關靜態(tài)鏈表的一些基本操作,包括對表中數(shù)據(jù)元素的添加、刪除、查找和更改。
本節(jié)是建立在已成功創(chuàng)建靜態(tài)鏈表的基礎上,我們繼續(xù)使用上節(jié)中建立好的靜態(tài)鏈表學習本節(jié)內容,建立好的靜態(tài)鏈表如圖?1 所示:

可以看到,靜態(tài)鏈表中存儲的是無頭結點的單鏈表。
靜態(tài)鏈表添加元素
例如,在圖 1 的基礎,將元素 4 添加到靜態(tài)鏈表中的第 3 個位置上,實現(xiàn)過程如下:
從備用鏈表中摘除一個節(jié)點,用于存儲元素 4;
找到表中第 2 個節(jié)點(添加位置的前一個節(jié)點,這里是數(shù)據(jù)元素 2),將元素 2 的游標賦值給新元素 4;
將元素 4 所在數(shù)組中的下標賦值給元素 2 的游標;
經(jīng)過以上幾步操作,數(shù)據(jù)元素 4 就成功地添加到了靜態(tài)鏈表中,此時新的靜態(tài)鏈表如圖 2 所示:

由此,我們通過嘗試編寫 C 語言程序實現(xiàn)以上操作。讀者可參考如下程序:
靜態(tài)鏈表刪除元素
靜態(tài)鏈表中刪除指定元素,只需實現(xiàn)以下 2 步操作:
將存有目標元素的節(jié)點從數(shù)據(jù)鏈表中摘除;
將摘除節(jié)點添加到備用鏈表,以便下次再用;
比較特殊的是,對于無頭結點的數(shù)據(jù)鏈表來說,如果需要刪除頭結點,則勢必會導致數(shù)據(jù)鏈表的表頭不再位于數(shù)組下標為 1 的位置,換句話說,刪除頭結點之后,原數(shù)據(jù)鏈表中第二個結點將作為整個鏈表新的首元結點。
若問題中涉及大量刪除元素的操作,建議讀者在建立靜態(tài)鏈表之初創(chuàng)建一個帶有頭節(jié)點的靜態(tài)鏈表,方便實現(xiàn)刪除鏈表中第一個數(shù)據(jù)元素的操作。
如下是針對無頭結點的數(shù)據(jù)鏈表,實現(xiàn)刪除操作的 C 語言代碼:
靜態(tài)鏈表查找元素
靜態(tài)鏈表查找指定元素,由于我們只知道靜態(tài)鏈表第一個元素所在數(shù)組中的位置,因此只能通過逐個遍歷靜態(tài)鏈表的方式,查找存有指定數(shù)據(jù)元素的節(jié)點。
靜態(tài)鏈表查找指定數(shù)據(jù)元素的 C 語言實現(xiàn)代碼如下:
靜態(tài)鏈表中更改數(shù)據(jù)
更改靜態(tài)鏈表中的數(shù)據(jù),只需找到目標元素所在的節(jié)點,直接更改節(jié)點中的數(shù)據(jù)域即可。
實現(xiàn)此操作的 C 語言代碼如下:
總結
這里給出以上對靜態(tài)鏈表做 "增刪查改" 操作的完整實現(xiàn)代碼:
程序運行結果為:
靜態(tài)鏈表為:
1,2 2,3 3,0
在第3的位置上插入元素4:
1,2 2,4 4,3 3,0
刪除數(shù)據(jù)域為1的結點:
2,4 4,3 3,0
查找數(shù)據(jù)域為4的結點的位置:
4
將結點數(shù)據(jù)域為4改為5:
2,4 5,3 3,0