题解 | #从单向链表中删除指定值的节点#

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    /**
     * 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
     * 链表的值不能重复。
     * 构造过程,例如输入一行数据为:
     * 6 2 1 2 3 2 5 1 4 5 7 2 2
     * 则第一个参数6表示输入总共6个节点,第二个参数2表示头节点值为2,剩下的2个一组表示第2个节点值后面插入第1个节点值,为以下表示:
     * 1 2 表示为
     * 2->1
     * 链表为2->1
     * 3 2表示为
     * 2->3
     * 链表为2->3->1
     */
   public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int size = in.nextInt();
            int head = in.nextInt();
            List<Integer> link = new ArrayList<>();
            link.add(head);
            for (int i = 0; i < size-1; i++) {//注意此处是size-1,一次循环取值两个
                int next = in.nextInt();
                int pre = in.nextInt();
                link.add(link.indexOf(pre) + 1, next);
            }
            int del = in.nextInt();
            link.remove((Integer) del);
            for (Integer t : link) {
                System.out.print(t + " ");
            }
        }
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务