移除链表元素
题目描述
测试结果
具体代码
package test_26;
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solutions {
public ListNode removeElements(ListNode head, int val) {
if(head==null) return null;
ListNode newHead=new ListNode(val+1);//假设一个假头,实际上结点随便什么值都可以
newHead.next=head;//返回值进行保留
ListNode p=newHead;//结点p为新头
ListNode q=head;//q为head,核心移动步骤
while(q!=null) {
//当不是该值的时候向后遍历
while(q!=null&&q.val!=val) {
p=p.next;
q=q.next;
}
//如果q==null说明没有该值的结点了
if(q==null) break;
//q!=null那么核心代码p.next=q.next;
q=q.next;
p.next=q;
}
return newHead.next;
}
}