创建新节点的Java问题

时间:2015-05-24 09:22:37

标签: java collections linked-list

•要求用户输入一组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);//???
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

Re factored your code.Here is a working solution.You don't need to create an additional function for addNode(). There is a predefined function known as add(index,element) when you are using java.util.LinkedList.But i would advice to first create your own linklist instead of using predefined LinkedList class. This will clear all your doubts.

Here i am assumming you are using 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();

}

Hope it helps you.