【问题标题】:java linked listjava链表
【发布时间】:2012-09-30 07:02:29
【问题描述】:

我正在处理一个链表问题,这是我的代码的问题问题,我遇到了三个错误,请帮忙。

编写一个名为“odd”的函数,它接受一个链表并返回奇数元素。实际上,编写两个函数,分别称为“奇数”和“偶数”。 odd(L) 返回 L 中第 1、3、5... 项的列表。 even(L) 返回 L 中第 2、4、6... 项的列表。每个函数调用另一个。这两个功能是基于一个简单的观察。 L.next 类似于 L,但缺少第一项。如果我们去掉第一个项目,项目 N+1 就变成了项目 N。所以 L 的第 2、3、4 个元素是 L.next 的第 1、2、3 个元素。现在如果 N+1 是奇数,N 是偶数,而如果 N+1 是偶数,N 是奇数。所以 L.next 的奇数成员是 L 的偶数成员,L.next 的偶数成员是 L 的奇数成员。然后我们可以计算奇数(L)如下。如果 L 为 null,则返回 null。否则返回一个列表,其第一项是 L.item,而它的尾部是偶数(L.next)。计算偶数(L):如果 L 为 null,则返回 null。否则返回奇数(L.next)。您的 main 函数应该从命令行读取一个正整数列表,并以 -1 终止该列表。它应该形成一个包含这些整数的链表,计算奇数成员的列表,并打印它们。

我的代码:

public class linkedlist
{
public static void main(String[] args) 
{

  List odd = new ArrayList();
  List even = new ArrayList();
  odd(L, odd, even);
}
void odd(L curNode, ArrayList oddList, ArrayList evenList) 
{

   if (curNode == null) return;


   oddList.append(curNode.val);
   even(curNode, oddList, evenList);
}

void even(L curNode, ArrayList oddList, ArrayList evenList) 
{
   if (curNode == null || curNode.next == null) return;


   evenList.append(curNode.n ext.val);
   odd(curNode.next.next, oddList, evenList);
}
}

【问题讨论】:

  • @MatinKh 作业标签最近已过时...
  • 嗨,这是作业,但我已经完成了,但仍然出现错误,我不想让任何人给我写代码,我只需要提示我的错误。谢谢。
  • 你有什么错误?
  • @MeredithAhlberg 我应该创建一个独立于任何 Java 库列表的链接列表 - 或者为此使用 Java 预构建的容器类之一?
  • @Ishtar:以下是我得到的错误:发现 3 个错误:文件:C:\Users\Meredith\Desktop\Java410\linkedlist.java [行:25] 错误:')' 预期文件:C:\Users\Meredith\Desktop\Java410\linkedlist.java [行:25] 错误:表达式的非法开始文件:C:\Users\Meredith\Desktop\Java410\linkedlist.java [行:25] 错误:' ;'预计

标签: java list linked-list


【解决方案1】:

我相信这有一个非常简单的解决方案。

您必须从列表的第一个元素开始,将其放入odd 列表中,并在even 旁边。

所以你所要做的就是这个,

  1. 从列表头部开始,交给odd函数。
  2. odd 函数中,将其存储在odd 列表中,然后调用even 函数及其下一个。
  3. even 函数中,将其存储在even 列表中,然后调用odd 函数及其下一个。
  4. 继续这些步骤,直到达到 null。

【讨论】:

  • 谢谢。这是我的第一次编程,所以对我来说很难。
  • 您需要进一步的帮助吗?如果有,请告诉我。
【解决方案2】:

您有语法错误。试试这个代码:

public class OddEven {
  public List even(List L) {
    List toReturn = new ArrayList();

    //replace this line with code that takes all even
    toReturn.add(L.get(0));

    return toReturn;
  }

  public static void main(String []args) {
    OddEven o = new OddEven();
    List input = Arrays.asList(1,2,3,4,5);

    List even = o.even(input);

    System.out.println(even);
  }
}

【讨论】:

    【解决方案3】:

    这可能有效:

    import java.util.LinkedList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class linked_list {
    
        public static void main(String args[])
        {
            linked_list theApp = new linked_list();
            theApp.run();
        }
    
        public void run()
        {
    
            LinkedList<Object> theList = getListFromUser();
            System.out.println( theList );
            LinkedList<Object> oddList = odd(theList);
            System.out.println(oddList);
        }
    
        LinkedList<Object> even(LinkedList<Object> theList)
        {
            if (theList == null || theList.size() == 0 )
            {
                return null;
            }
            Integer a = (Integer) theList.removeFirst();
            return odd(theList);
        }
    
        LinkedList<Object> odd(LinkedList<Object> theList)
        {
            if (theList == null || theList.size() == 0 )
            {
                return null;
            }
            LinkedList<Object> temp = new LinkedList<Object>();
            Integer value = (Integer) theList.removeFirst();
            LinkedList<Object> temp2 = even(theList);
            if ( temp2 != null )
            {
               temp.addAll( temp2 );
            }
            temp.add(value);
            return temp;
        }
    
        LinkedList<Object> getListFromUser()
        {
            LinkedList<Object> temp = new LinkedList<Object>();
            Scanner user_input = new Scanner( System.in );
            int value = 0;
            System.out.println("Enter some integers for a list");
            System.out.println("Enter -1 when done");
            String integer;
            while (value != -1)
            {
                System.out.println("Enter integer:");
                integer = user_input.next();
                value = Integer.parseInt(integer);
                if ( value != -1 )
                {
                    temp.add( new Integer(value));
                }
            }
            return temp;
        }
    
    }
    

    运行:

    Enter some integers for a list
    Enter -1 when done
    Enter integer:
    1
    Enter integer:
    2
    Enter integer:
    3
    Enter integer:
    4
    Enter integer:
    5
    Enter integer:
    6
    Enter integer:
    7
    Enter integer:
    8
    Enter integer:
    9
    Enter integer:
    10
    Enter integer:
    -1
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    [9, 7, 5, 3, 1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-18
      • 2012-03-20
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 2013-02-11
      • 2019-05-02
      • 2023-03-22
      相关资源
      最近更新 更多