問題描述:
刪除鍊錶中等於給定值 val 的所有節點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
解決方法,遞迴思想:
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
//遞迴呼叫
listnode res = removeelements(head.next,val);
if(head.val == val)else}}
該**遞迴的講解:
將乙個大問題拆分成每乙個小問題的組合
理解起來可以這樣:遞迴就相當於一直自己呼叫自己,然後在自己呼叫自己的時候呢,一直呼叫到遞迴結束
//當目前的head為null時就說明遞迴呼叫可以結束了,那麼就不進行遞迴呼叫,直接返回null
if(head == null)
然後我們可以倒著去理解這個遞迴的過程;
當呼叫到遞迴結束的時候,那麼head == null,所以返回了null。也就是上一層的res就變成了null。然後我們接下來看這一層也就是倒數第二層後面的邏輯,現在的head.val
是否等於val。如果等於的話說明需要刪除這個節點,那麼直接將res返回回去給倒數第三層作為res,如果不等於,說明這個當前的節點不需要刪除,那麼就把這個節點連線上之前的res再返回給倒數第三層。
**:(有點撈)
用遞迴思想刪除鍊錶中的元素
package datadtructure classname removelistnode company 華中科技大學電氣學院 date 2019 8 26 15 22 author yexin version 1.0 since jdk 1.8 description 通過遞迴刪除鍊錶中的節點...
利用遞迴思想實現鍊錶逆置
演算法思想 如果採取不建立新的單鏈表的方法逆置鍊錶,我們就利用遞迴的思想實現鍊錶的逆置。首先設定乙個指向原鍊錶最後乙個結點5的指標newhead,並且由於完成逆置後的鍊錶的頭結點是結點5,所以newhead始終指向結點5。第一次回溯 head next null的意義在於能夠使結點1中的next指標...
鍊錶 遞迴刪除不帶頭結點鍊錶所有x元素
王道p37 t1 設計乙個遞迴演算法,刪除不帶頭結點的單鏈表l中所有值為x的結點。王道上的答案絕對是錯的,我自己想了乙個 函式主體 linklist del x linklist prior,linklist l,int x else if l data x 呼叫方法 l del x null,l,...