2016-12-01 95 views
0

我打算編寫一個帶有兩個鏈接列表的Java函數。兩者都有相同的尺寸。我想返回一個新列表,其中包含傳遞給我的函數的兩個列表的相應節點中找到的最大數據。比較兩個鏈接列表並使用最大值返回列表

但是我被困在填寫新列表。我想出了這個:

function max2List (LinkedList list1 , LinkedList list2) { 
    LinkedList <int> list3 = new LinkedList<int>(); 
    for (ListNode p = list1.first ; p!=null; p=p.next) { 
     for (ListNode p = list2.first ; p!=null; p=p.next) { 
      if (list1.p.data > list2.p.data) { 
       //return list3 here with big value 
      else if (list1.p.data < list2.p.data) { 
       //return list3 here with big value 

我不知道如何繼續。我希望list3包含兩個列表中的最大值。

+0

當你說你要「最大限度的數據......」你的意思是每個列表或最大的單一元素你是否想要每個列表中最大的數據元素的更大的子集?每個列表的前半部分?合併列表的前x%? – mba12

+0

我的意思是將每個列表中的單個最大元素放在一個新列表中 – GenreicITStudent

回答

0

首先,你寫的是不是有效的Java。泛型不能使用原始類型,例如在您的示例中使用<int>。它需要是一個類,例如<Integer>function也不是一個關鍵字。

爲了簡便起見,下面的代碼假定這兩個列表大小相同:

public static List<Integer> max2List (List<Integer> list1, List<Integer> list2) 
{ 
    List<Integer> maxValues = new LinkedList<>(); 

    for (int i = 0; i < list1.size(); ++i) 
    { 
     // If item in list1 is larger, add it 
     if (list1.get(i).compareTo(list2.get(i)) > 0) 
     { 
      maxValues.add(list1.get(i)); 
     } 
     else // else add the item from list2 
     { 
      maxValues.add(list2.get(i)); 
     } 
    } 

    return maxValues; 
} 
+0

對不起,我在第一行的錯誤,但我想創建一個循環,在第一個列表中找到最大的價值把它放在一個新的列表中,然後第二個循環在第二個列表中找到最大值並將其放入新列表中基本上list3應該包含這兩個列表中的最大值 – GenreicITStudent

+0

你是說list3應該總是包含2個項目 - 列表1中的最大項目和列表2中最大的項目? – Michael

+0

它應該包含最大的值,如list1 = 3-> 7-> 5-> null list2 = 2-> 1-> 5-> null然後list3 = 3-> 7-> 5-> null – GenreicITStudent