【问题标题】:Java problems creating a new node创建新节点的 Java 问题
【发布时间】:2015-05-24 09:22:36
【问题描述】:

• 要求用户输入一组 5 个数字。

• 对于输入的每个数字,将其添加到链接列表的前面。

• 现在,要求用户输入搜索号码。

• 使用for 循环或while 循环,搜索该数字是否存在于链表中的一个节点中。

• 如果存在匹配节点,则使用数据 88 创建一个新节点并将其插入到匹配节点之前。否则,显示消息“No such number”。

大家好,我希望你能帮助我完成最后一部分的 java 代码。

public static void main(String[] args) {
    LinkedList list = new LinkedList();
    Scanner sc = new Scanner(System.in);   
    System.out.println("Enter a number: ");
    int num = sc.nextInt(); sc.nextLine();
    for(int i = 0; i < 4; i++){
        list.addFront(num);
    }
    System.out.print("Enter a number: ");
    int search = sc.nextInt(); sc.nextLine();
    for(Node j = list.getHead(); j!= null; j=j.getNext()){
        if((Integer)j.getData()==search){
            list.addNode();
        }else{
            System.out.println("No such number");
        }

    }
    public static Node addNode(T n);//???
}

【问题讨论】:

    标签: java collections linked-list


    【解决方案1】:

    我认为您的代码甚至不适用于第一点。您所做的是读取一个数字一次,然后将相同的数字 4 次放入链表中。

    要将节点添加到另一个节点之前的列表中,您需要将其放在前面的节点的索引,然后使用 LinkedList 的add(int index, E element) 方法。索引可以通过indexOf(Object o)找到。 https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html

    【讨论】:

      【解决方案2】:

      重构您的代码。这是一个可行的解决方案。您不需要为 addNode() 创建额外的函数。 当您使用 java.util.LinkedList 时,有一个称为 add(index,element) 的预定义函数。但我建议您首先创建自己的链接列表,而不是使用预定义的 LinkedList 类。 这将消除您的所有疑虑。

      这里我假设你正在使用 java.util.LinkedList。

      public static void main(String args[]){
           LinkedList<Integer> list = new LinkedList<Integer>();
           Scanner sc = new Scanner(System.in);    
           for(int i = 0; i < 4; i++)
           {
               System.out.println("Enter a number: ");
               int num = sc.nextInt(); sc.nextLine();
               list.addFirst(num);
           }
      
          System.out.print("Initial list:"+list);
          System.out.print("Enter a number: ");
          int search = sc.nextInt(); sc.nextLine();
          Iterator<Integer > itr=list.iterator();
          int i=0;
          boolean flag=false;
      
          while(itr.hasNext())
          {
              int data=itr.next(); 
              if(data==search){
              list.add(i,88);
              flag=true;
              break;
          }
          i++;    //index of data  
          }
          if(!flag)
          {
              System.out.println("No such number");
          }
         else
         {
             System.out.println("Number inserted at "+i);
         }
         System.out.print("final list:"+list);
         sc.close();
      
      }
      

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 2018-05-05
        • 2016-12-22
        相关资源
        最近更新 更多