編程之美-從無頭單鏈表中刪除節點

第三章 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結點

發佈了83 篇原創文章 · 獲贊 13 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章