2016-12-09 71 views
0

我已經編寫了下面的代碼,用於查找單鏈表末尾的第五個元素。列表不應該遍歷一次以上。假設列表大小不能無需遍歷列表即可知曉。我的代碼是否滿足這個問題?我已經看到了使用指針解決相同的問題,所以我很困惑,如果我的方法是錯誤的。單行鏈表末尾沒有遍歷列表的第五個元素

public class LinkedList { 

    public static void main(String[] args) { 

     List<String> inputListStr = new ArrayList<String>(); 
     java.util.LinkedList<String> outputList = new java.util.LinkedList<String>(); 
     System.out.println("Enter comma separated input"); 
     Scanner Scan1 = new Scanner(System.in); 
     inputListStr = Arrays.asList(Scan1.next().split(",")); 
     outputList.addAll(inputListStr); 
     nthElement(outputList); 
     Scan1.close(); 
    } 

    public static void nthElement(java.util.LinkedList<String> outputList) { 

     int counter = 0; 
     for (String list : outputList) { 
      counter++; 
     } 

     System.out.println("5th element is " + outputList.get(counter - 5)); 

    } 
} 
+1

你應該問問你的老師,但我會說不,因爲'get'可能會遍歷列表。提示:遍歷時,始終保留一個指向前5個元素的指針 – SJuan76

+0

我也建議不要將類命名爲與java.util.LinkedList類相同的東西 - 這很讓人困惑。 – EJoshuaS

回答

1

LinkedListArrayList保持大小爲實例內的int。因此,檢查大小不計算爲遍歷列表。

所以,你的問題可以用一行代碼來解決:

Object solution = list.get(list.size() - 5); 

當然,你將需要添加一些檢查,比如如果列表的大小至少爲5,但你的想法^^

+0

已經添加了檢查..我希望解決這個問題,而不使用指針是好的。 – Aish