第三章 3.4 從無頭單鏈表中刪除節點
問題詳細描述:
假設有一個沒有頭指針的單鏈表。一個指針指向此單鏈表中間的一個節點(不是第一個,也不是最後一個),請將該結點從單鏈表中刪除
解題思路:
按照題意需要刪除A結點,但是A結點不是頭結點,我們也不能得到A結點的前一個結點。
這時我們換一下思路,我們來對B結點做點文章,通過將B節點的值賦值給A結點,然後將A結點的next指針指向B結點的next指針指向的結點(即C結點),最後刪除B結點。這樣得出的結果其實正是將A結點刪除了。
所以真正操作就3步:
這裏假設q = p->next ;
1)p->val =q->val ; //將B節點的值賦值給A結點
2)p->next = q->next ; //將A結點的next指針指向B結點的next指針指向的結點(即C結點)
3)delete q ; //刪除B結點