JAVA遞迴思想解決鍊錶刪除元素問題

2021-08-28 20:03:23 字數 929 閱讀 4679

問題描述:

刪除鍊錶中等於給定值 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,...