现在有一个单链表。链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉。
给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值。请保证其他元素的相对顺序。
测试样例:
{1,2,3,4,3,2,1},2
{1,3,4,3,1}
代码如下:
package lianbiao;
public class zhidingqingchu {
public static void main(String[] args) {
// TODO Auto-generated method stub
ListNode l1 =new ListNode(1);
ListNode l2 =new ListNode(2);
ListNode l3 =new ListNode(3);
ListNode l4 =new ListNode(4);
ListNode l5 =new ListNode(2);
l1.next = l2;
l2.next = l3;
l3.next = l4;
l4.next = l5;
ListNode lNode = zhidingqingchu.clear(l1, 2);
while(lNode != null){
System.out.print(lNode.val+" ");
lNode = lNode.next;
}
}
public static ListNode clear(ListNode head, int val) {
// write code here
ListNode tail =head;
ListNode pro =new ListNode(0);
ListNode p =pro;
if(tail ==null)return null;
while(tail !=null){
if(tail.val == val){
tail = tail.next;
}else{
p.next = new ListNode(tail.val);
p = p.next;
tail = tail.next;
}
}
return pro.next;
}
static class ListNode {
int val = 0;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
}