資料結構 移除鍊錶元素(基於java語言實現)

2021-09-17 08:31:37 字數 1732 閱讀 4794

刪除鍊錶中等於給定值 val 的所有節點。

示例:

輸入:1-

>2-

>6-

>3-

>4-

>5-

>

6, val =

6輸出:1-

>2-

>3-

>4-

>

5

方法1:

思想:遍歷原鍊錶的所有節點,比較每個節點的 val 值,將與 val 值不相等的節點挨個插入乙個新的鍊錶,每遇到乙個與 val 值 不相等的節點,就將該節點插入新鍊錶,且需要尾插。

具體實現:

定義變數

(1)原煉表中會有乙個頭節點 head,定義乙個 cur 變數表示當前變數,

使 cur = head;

(2) 定義乙個新的鍊錶result用來存放結果;

(3)原煉表中與val 值不相等的節點需要尾插入結果鍊錶,尾插時必須知道結果鍊錶的最後乙個節點,定義乙個last節點用來記錄結果鍊錶的最後乙個節點;

遍歷原鍊錶

(1)原鍊錶遍歷的條件:cur != null

原煉表在遍歷過程中節點進行增進:cur = cur.next

(2)在遍歷的過程中進行尾插

i. 把當前節點尾插入結果鍊錶,則當前節點就是結果鍊錶中的最後乙個節點,cur.next = null;

ii. 定義結果鍊錶時,定義為空;

當首次給結果鍊錶中插入節點即給定乙個頭結點,result = cur;last = cur

當結果鍊錶不為空時,last.next = cur;

然後更新最後乙個節點:last = cur;

返回結果鍊錶:return result;

**實現:

package www.fanfan.com;

/** * author:kelly_fanfan

*/public

class

leetcode203

}class

solution

else

//更新結果鍊錶的最後乙個節點

//也是通過 last = cur 將結果鍊錶與最後乙個節點聯絡起來

last = cur;

} cur = next;

}return result;}}

}

方法2:

思想:遍歷原鍊錶,將每個節點的 val 值與給定的 val 值進行比較,若相等,則直接刪除該節點,遍歷繼續往下走。最後所得的鍊錶就是刪除所有與 val 值相等的節點的鍊錶。

難點:要刪除乙個節點則必須要知道該節點的前乙個節點。但是頭結點之前再沒有節點,所以要特殊考慮頭結點的情況。

**實現:

package www.fanfan.com;

/** * author:kelly_fanfan

*/public

class

leetcode203

}class

solution

while

(head.val == val)

} listnode cur = head;

while

(cur.next != null)

else

}return head;}}

}

資料結構 移除鍊錶中值為val的元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 struct listnode 思路 定義兩個指標 比如ppre,pcur 讓ppre指向頭結點,讓pcur指向頭的下乙個結點,然後一起向前走,找值為val的節點。找到後更新ppr...

移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 兩個引用,乙個指向頭結點,乙個指向頭結點的下乙個結點,要考慮頭結點為null的情況。遍歷鍊錶,當遇見和val相等的數,就直接把它刪掉,好要考慮當第乙個節點就是要刪除的節點時,直接h...

45 移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 我的 效率很低,實現的很簡單,首先就是獲取第乙個不是val的字元,之後建立乙個新節點,然後一直判斷,比較笨拙 class solution else if list null li...