移除链表元素
方法一:感觉有点直接的方法
解题思路:
public ListNode removeElements(ListNode head, int val) {
while(head!=null&&head.val==val){//头结点是指定元素
head=head.next;
}
if(head==null){//1-1-1-1-1-1 确保不是这种情况
return null;
}
ListNode pre=head;
while(pre.next!=null){//找到指定元素删除,但是当前指针不动
if(pre.next.val==val){
pre.next=pre.next.next;
}else{//没找到向下走一步
pre=pre.next;
}
}
return head;
}
方法二:创建一个虚拟头结点,然后进行删除操作,这样每个元素都可以当做上面情况的一般情况处理
class Solution {
//自己的方法:
public ListNode removeElements(ListNode head, int val) {
ListNode dummyHead=new ListNode(0);
dummyHead.next=head;
ListNode pre=dummyHead;
while(pre.next!=null){//找到指定元素删除,但是当前指针不动
if(pre.next.val==val){
pre.next=pre.next.next;
}else{//没找到向下走一步
pre=pre.next;
}
}
return dummyHead.next;
}
}