2015-05-24 63 views
1

•要求用户输入一组5个数字。创建新节点的Java问题

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

•现在,请求用户输入搜索编号。

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

•如果存在匹配的节点,请使用数据88创建一个新节点,并将其插入匹配节点之前。否则,显示消息“没有这样的号码”。

大家好,我希望你能帮我解决最后一部分的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);//??? 
} 

回答

1

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

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

0

重新考虑了您的代码。这里是一个工作解决方案。您不需要为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(); 

} 

希望它可以帮助你。