题目:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
解析:
先判断一下当前head节点的值,如果为空,直接返回null;
如果为删除节点值,直接返回head.next.
然后while()循环判断head.next值即可,不为删除值的话,则继续指向该节点;为删除值,则判断删除值之后的节点是否为空,不为空的话,则指向删除值节点的后继节点。
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
if(head==null){
return null;
}
if(head.val==val){
return head.next;
}
ListNode new_head=head;
while(new_head.next!=null && new_head.next.val!=val){
new_head=new_head.next;
}
if(new_head.next!=null){
new_head.next=new_head.next.next;
}
return head;
}
}