【链表】203. 移除链表元素
解题思路
- 删除链表元素
- 设置哑结点 指向head节点
- 然后设置前去指针 以及当前指针 前驱指针指向哑结点,当前指针指向后面一个节点
- 遇到需要删除的节点之后,进行删除操作
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
// 创建哑结点 然后指向首元素的节点 然后设置当前指针指向哑结点
ListNode dummyNode = new ListNode(0);
dummyNode.next = head;
ListNode pre = dummyNode;// pre在这里相当于前驱节点指针
ListNode cur = head;
// 循环遍历链表
while(cur != null){
if(cur.val == val){
// 如果下一个元素是val 删除该元素
pre.next = cur.next;
}
else{
pre = cur;// 如果不是需要删除的元素 直接移动指针
}
cur = cur.next;
}
ListNode x = dummyNode.next;
return x;
}
}