题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
import java.util.*;
class ListNode{
int val;
ListNode next;
ListNode(){};
ListNode(int val){
this.val = val;
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
ListNode head = new ListNode(in.nextInt());
for(int i = 0; i < n - 1; i++){
int cur = in.nextInt();
int pre = in.nextInt();
head = insert(head,cur,pre);
}
int r_val = in.nextInt();
head = remove(head,r_val);
while(head != null){
System.out.print(head.val + " ");
head = head.next;
}
}
private static ListNode insert(ListNode head,int cur, int pre){
ListNode dummy = new ListNode(-1);
dummy.next = head;
while(head.val != pre){
head = head.next;
}
ListNode n_Node = new ListNode(cur);
n_Node.next = head.next;
head.next = n_Node;
return dummy.next;
}
private static ListNode remove(ListNode head,int val){
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy;
while(pre.next.val != val){
pre = pre.next;
}
pre.next = pre.next.next;
return dummy.next;
}
}

