單鏈表的必要條件:頭節點的head,以及尾指針指向null;
1 頭結點
首先,不要被以下三個詞組弄混了:
鏈表頭:數據內容為第一個元素的結點。
頭指針:指向頭結點元素的指針。
頭結點:數據內容無效,其指針是頭指針。
一句話描述為:頭指針是指向頭結點的指針,頭結點是指向鏈表頭的結點。
對於一個鏈表來說,頭指針是一定存在的,是訪問鏈表的入口,如果沒有頭指針則無法對其進行訪問;鏈表頭對於非空表來說是一定存在的,非空表則不存在。
2 尾指針
另外一種鏈表的技巧是使用尾指針。
尾指針是相對於頭指針而言的,形式與頭指針相同,內容只想鏈表的最后一個節點。
通常,鏈表的插入語刪除操作都是在鏈表頭或者鏈表尾進行。如果只保存一個頭指針的話,要在鏈表尾操作時必須先遍歷整個表,增加了時間復雜度,如果能再保存一個尾指針,則可以立即找到鏈表尾,時間復雜度降為O(1)。
在單向循環鏈表中,時常值保存一個尾指針,因為尾指針的下一個節點即是頭結點。這樣便可以方便地在首尾進行操作。
如果未使用頭節點,在頭節點處加入元素,要考慮head的變化(新加入的元素為head);同樣的,若使用尾指針,那么在尾添加元素時,要注意尾指針(讓新加入的元素指向null)的變化!!!! (一句話,始終保持變化后的狀態是一鏈表!!!)