import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param val int整型 * @return ListNode类 */ public ListNode deleteNode (ListNode head, int val) { // write code here // 空链表直接返回null if(head == null){ return null; } // 先判断第一个节点的值是否是要删除的节点的值 int value = head.val; if(val == value){ return head.next; } // 临时节点,判断节点的上一个节点 ListNode preNode = head; // 临时节点,判断节点 ListNode tempNode = head.next; while(value != val){ ListNode next = tempNode; if(next != null){ value = next.val; }else{ break; } if(value == val){ // 找到要删除的节点,则将该节点的上一个节点的next值指向该节点的下一个节点的值,达到删除效果 preNode.next = next.next; break; }else{ // 此节点不是要删除的节点,指针统一后移 tempNode = next.next; preNode = next; } } return head; } }