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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
           int nodeNum = scanner.nextInt();
           int headVal = scanner.nextInt();
           Node head = new Node(headVal,null);
           for(int i = 0; i < nodeNum - 1; i ++)
           {
               int addVal = scanner.nextInt();
               int findVal = scanner.nextInt();
               Node tmpNode = head;
               while(tmpNode != null)
               {
                   if(findVal == tmpNode.val)
                   {
                       Node addNode = new Node(addVal,tmpNode.next);
                       tmpNode.next = addNode;
                       break;
                   }else{
                       tmpNode = tmpNode.next;
                   }
               }
           }
            int delVal = scanner.nextInt();
            Node tmpNode = head;
            Node pre = head;
            while(tmpNode != null)
            {
                if(delVal == tmpNode.val)
                {
                    //对当前要删的值是头结点,需要做特殊处理
                    if(tmpNode == head)
                    {
                        head = head.next;
                        break;
                    }else{
                        if(pre != null)
                        {
                            pre.next = tmpNode.next;
                            break;
                        }
                    }

                }else{
                    pre = tmpNode;
                    tmpNode = tmpNode.next;
                }
            }

            /**
             * 打印
             */
            tmpNode = head;
            while(tmpNode != null)
            {
                System.out.print(tmpNode.val + " ");
                tmpNode = tmpNode.next;
            }
        }
    }
    static class Node{
        private int val;
        private Node next;
        Node(int val,Node next)
        {
            this.val = val;
            this.next = next;
        }
    }
}

全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务