刪除不知道頭結點的單鏈表中的p指針所指的值

PP
解題思路:
一般情況下要刪除指針P所指的節點就必須先從頭結點開始遍歷整個單鏈表直到找到P節點的前一個節點然後再怎麼操作這大家都是知道的,這不是我的重點,所以就不寫了!
但是遍歷整個單鏈表是有條件的,必須知道頭結點,平均情況算法時間複雜度爲n/2 ,與題目要求不相符合。
因此我們發現本題並不能通過遍歷倆實現,所以就死了這條心。那麼究竟該用什麼方法呢?歷史書上的狸貓換太子大家並不陌生,下面我來說明這算法中的“狸貓換太子”。我們可以把p所指節點的下一個節點的值賦值給P所指的節點,因此就就可以通過刪除下一個節點而達到目的!具體操作就不用多說了,思想最重要,其餘的都是浮雲!

總結:在一些問題中通過常規思維我們並不能達到目的,因此平時思考的時候除了通過最常規的思維外想想還能不能通過反常規的思維實現,說不定以後工作當中就會出現這樣的問題。舉個例子:把變量a,b的值交換:90%的人會藉助一個變量暫存其中一個的值:實現如下:

x=a;a=b;b=x;

但是我們如果不借助變量怎麼實現呢?如下:
a=a+b;b=ab;a=ab;

一下就可以看出來:如果自己覺得不看不出來,就寫個代碼就可以了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章