算法描述如圖,但是不知道這個q的作用,求大神詳細解答一下。
i=0時:
pre=P;//此時pre指針指向頭結點
q=P->next;//q被賦值成NULL
while(....)//不滿足
s->next=q;//將新插入的節點的next指針指向q,也就是被賦值成NULL了
pre->next=s;//讓頭結點的next指針指向了新插入的節點s
i=1時:
pre=P;//此時pre指針還是指向頭結點
q=P->next;//q指向了第一個節點(也就是之前的節點s)
while(假設滿足條件){
pre=q;//pre從指向頭結點變成了指向第一個節點
q=q->next;//q變成了NULL(因為第一個節點的next指針為NULL)
}
s->next=q;//將新插入的節點的next指針指向q,也就是被賦值成NULL了(如果此時的q不是最後一個節點,那麼s的next指針就指向他)
pre->next=s;//找到插入位置後將該節點對應的next指針指向了新插入的節點s
列舉了兩個循環:樓主應該發現
其實這個pre有兩個作用:
1.pre=P;//此時pre指針指向頭結點,就是每次循環都讓pre指向頭結點的地址(這樣才能從頭開始遍歷所有節點)
2.while循環裡,pre的作用在於找到應該在哪個節點後(假設是a)插入新節點
3.pre->next=s;pre的作用是將a的next指針指向新插入的節點(這樣才能將鏈表連起來)