一.移除鏈表元素
1.題目鏈接
203. 移除鏈表元素 - 力扣(LeetCode)
2.思路
通過?
?while
?循環來遍歷鏈表,只要?cur
?的下一個節點不為空,就繼續循環。在循環中,對?cur
?的下一個節點的值進行判斷:
- 值不等于?
val
?的情況:如果?cur.next.val
?不等于?val
,說明當前?cur
?的下一個節點不需要移除,那么將?cur
?指針向后移動一位,即?cur = cur.next
,繼續檢查后續節點。- 值等于?
val
?的情況:如果?cur.next.val
?等于?val
,說明當前?cur
?的下一個節點是需要移除的目標節點。此時,將?cur
?的?next
?指針直接指向?cur.next.next
,這樣就跳過了值為?val
?的節點,從而將其從鏈表中移除。在移除節點后,cur
?指針不需要移動,因為下一個新的節點還沒有被檢查,需要繼續在當前位置進行判斷。
3.代碼
class Solution {public ListNode removeElements(ListNode head, int val) {ListNode dummy=new ListNode(0);dummy.next=head;ListNode cur=dummy;while(cur.next!=null){if(cur.next.val!=val){cur=cur.next;}else{cur.next=cur.next.next;}}return dummy.next;}
}
二.反轉鏈表
1.題目鏈接
206. 反轉鏈表 - 力扣(LeetCode)
3.代碼
class Solution {public ListNode reverseList(ListNode head) {ListNode pre=null;ListNode cur=head;while(cur!=null){ListNode cur_next=cur.next;cur.next=pre;pre=cur;cur=cur_next;}return pre;}
}