比较两个链接列表并使用最大值重新列出列表

时间:2016-12-01 18:09:29

标签: java linked-list

我打算编写一个带有两个链表的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包含两个列表中的最大值。

1 个答案:

答案 0 :(得分: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;
}