缺乏头节点时,添加头节点后,以后的对于链表的表示都用这个头节点来表示。
203题:删除一个结点。结点的赋值到底什么含义。。。。。
public static ListNode removeElements(ListNode head, int val) {
if(head==null) return head;
ListNode p=new ListNode(0);
p.next=head;
ListNode q=head;
while(q!=null){
if(q.val==val){
p.next=q.next;
q=null;//已经置为null,head却没改变。。。
q=p.next;
}else{
p=p.next;
q=q.next;
}
}
return head;
}//不通过,更改为下:通过
public ListNode removeElements(ListNode head, int val) {
if(head==null) return head;
ListNode p=new ListNode(0);
p.next=head;
ListNode q=head;
ListNode s=p;
while(q!=null){
if(q.val==val){
p.next=q.next;
q=null;
q=p.next;
}else{
p=p.next;
q=q.next;
}
}
return s.next;
}
如下也错
public static ListNode removeElements(ListNode head, int val) {
ListNode pListNode=new ListNode(0);
pListNode.next=head;
ListNode sListNode=head;
while(head!=null){
if(head.val==val){
pListNode.next=head.next;
head=null;
head=pListNode.next;
}else{
pListNode=pListNode.next;
head=head.next;
}
}
return sListNode;
}