2017-09-15 18 views
2

所以我無法嘗試從一個有兩個整數參數n和m的方法構建鏈表。參數n是鏈表的節點長度,m是節點列表中包含從0到m-1的隨機整數的參數。我需要從預定義的無法更改的Node類構建此鏈接列表,並將引用返回到鏈表中的第一個元素。我不知道如何遍歷while循環中的鏈表。如何使用具有兩個整數參數的方法構建鏈表並將引用返回到節點列表的第一個元素?

Node類

public class iNode{ 
public int item; 
public iNode next; 

public iNode(int i, iNode n){ 
    item = i; 
    next = n; 
} 
public iNode(int i){ 
    item = i; 
    next = null; 
} 

構建鏈表法

public static iNode list(int n, int m){ 

    iNode first; 
    iNode newNode; 
    iNode last; 


    first = null; 
    while () 
    { 
     newNode = new iNode(m, first.next); 
     if (m > 0){ 
      newNode.item = m-1; 
     } 
     newNode.next = null; 

     if (first == null) 
     { 
      first = newNode; 
      last = newNode; 
     } 
     else 
     { 
      last.next = newNode; 
      last = newNode; 
     } 

    } 
    return first; 
} 

回答

1

你是過於複雜了。從列表的末尾開始,添加帶有前一個鏈接的節點。最後只返回最後創建的節點。另外,你不會從0..m-1範圍內添加隨機int。那就是:

public static void main(String[] args) { 
     iNode res = list(5, 10); 

     while(res != null){ 
      System.out.println(res.item); 
      res = res.next; 
     } 
    } 

    public static iNode list(int n, int m) { 

     iNode previous; 
     iNode current; 

     int i = 0; 
     previous = null; 
     while (i < n) { 
      current = new iNode(ThreadLocalRandom.current().nextInt(0, m), previous); 
      previous = current; 

      i++; 
     } 
     return previous; 
    } 

輸出:

2 
5 
7 
8 
9 

附:請遵循java代碼約定。類名應以大寫字母開頭 - iNode

+0

是的,但是我怎樣才能生成從m-1到0範圍的隨機數。 – Alan

+0

剛剛添加到代碼中。 –

相關問題