代码:(注意返回的时链表的头结点)
package com.likou;
/**
* 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
* 返回删除后的链表的头节点
*/
public class test18 {
public static void main(String[] args) {
int[] arr = new int[]{4,5,1,9};
ListNode head = new ListNode(arr[0]);
head.next = new ListNode(5);
head.next.next = new ListNode(1);
head.next.next.next = new ListNode(9);
ListNode result = fun(head,5); // 返回的是删除后链表的头结点
System.out.println(result.val);
}
/**
* 单指针法
* @param head
* @param val
* @return
*/
private static ListNode fun(ListNode head, int val) {
if (head.val == val){
return head.next; // 返回链表头结点
}
ListNode cur = head; // 指针
while (cur.next != null){
if (cur.next.val == val){
cur.next = cur.next.next;
break;
}
cur = cur.next; // 移动指针
}
return head; // 返回头结点
}
}