2016-12-01 11 views
0

2つのリンクされたリストを取るJava関数を書くことを計画しています。どちらも同じサイズです。私は、関数に渡された2つのリストの対応するノードで見つかったデータの最大値を含む新しいリストを返したいと思います。2つのリンクされたリストを比較し、最大値を持つリストを保持する

しかし、私は新しいリストを埋めるのに悩んでいます。私はこれを思いついた:

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に2つのリストからの最大値を格納します。

+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

最初の行で私の間違いを申し訳ありませんが、私は最初のリストに入るループを作成することを考えていました。 2番目のリストに入る2番目のループは最大の値を見つけて新しいリストに入れますlist3は両方のリストから最大値をとります – GenreicITStudent

+0

list3は常に2つの項目を含むべきですか?リスト2の最大のアイテム? – Michael

+0

リスト1 = 3-> 7-> 5-> nullリスト2 = 2-> 1-> 5->ヌル、リスト3 = 3-> 7-> 5->ヌル – GenreicITStudent

関連する問題