2015-05-24 67 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(); 

} 

希望它可以幫助你。