註釋:或者可以理解爲指向頭節點的指針既可以表示整個單鏈表也可以表示頭節點,爲了便於區分才建議使用 typedef 進行重命名,以方便區別其不同的含義
具體實現
分析在表頭插入
分析爲什麼不能顛倒
分析在表中插入
分析在表尾插入
分析插入位置超出表長
總結
具體實現
結論:不帶頭節點的單鏈表,寫代碼更不方便,除非特別聲明,默認推薦使用帶頭節點的實現方式,還有要注意在考試中帶頭、不帶頭都有可能考察,注意審題。
指定節點的前插操作
通過傳入頭指針實現前插
先進行後插,然後交換前後數據,以此實現前插
具體實現
如果P是最後一個節點,咋辦?
只能從表頭表頭依次尋找前驅,時間複雜度O(n)
單鏈表的侷限性:無法逆向檢索!!
#####按值查找(帶頭節點)
PS:找不到對象就娶一個數據元素吧!哈哈
第一種方法:
問題:時間複雜度太高!!可以用一個指針記錄最後一個數據元素的位置來優化時間。
優化之後:
具體實現: