創建動態單向鏈表時為什么需要結構體指針p1和p2一個頭指針不就夠了嗎?
首先,頭指針不能丟,需要保存的,而p1是從頭指針得到首節點后,查看當前指向節點的next是否為空判斷是否尾節點,如果不是尾節點,或者說當前節點的next不為NULL則p1將被賦值成這個next以便找到鏈表下一個節點,而p1一開始存儲的頭指針就會被沖掉,所以在進行操作后p1就不能被當成鏈首指針來用了。
其次,新的節點生成,會通過new或malloc來申請空間,其返回值是個指針,這時一般要用指針變量p2來接收這個指針,然后將鏈表尾節點的next賦值成這個p2的內容,p2指向的next再賦值成NULL成為尾節點。最后,如果需要在鏈表中插入,就需要一個指針p1指向當前節點,另一個p2指向當前節點之后的節點,然后將p1的next賦值成新節點指針,新節點指針的next賦值成p2,完成插入。總體來說,所謂p1和p2是臨時輔助性的變量,是為方便使用的中間變量,這個從方便出發申請的工作變量也無需節省。