/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
//判断头节点是否为空,是不是需要删除的元素 是的话删除后下一个节点是不是空 是不是需要删除
//头节点特殊 没有前一个节点
while(head !=null && head.val == val){
ListNode delNode = head;
head = head.next;
delNode.next = null;
}
if(head == null){
return null;
}else{
//定义待删除节点的前一个节点,因为这里的头结点经过前面的逻辑 一定不是待删除节点
ListNode prev = head;
//遍历链表
while(prev.next != null){
//判断prev 后面的一个节点是不是待删除节点
if(prev.next.val == val){
//将待删除节点的前一个节点中的next的引用指向的地址改为 待删除节点中next保存的引用指向的地址
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
}else{
//如果不是待删除元素 遍历后面的节点 prev往后移
prev = prev.next;
}
}
}
return head;
}
}
LeetCode203删除链表中指定的节点
猜你喜欢
转载自blog.csdn.net/qq_42664961/article/details/86669015
今日推荐
周排行