0

リンクリストの問題に取り組んでいます。これが私のコードの質問の問題です。3つのエラーが発生しています。助けてください。

リンクリストを取得し、奇数の要素を返す「odd」という関数を記述します。実際には、「奇数」と「偶数」という2つの関数を記述します。odd(L)は、Lの1、3、5 ...アイテムのリストを返します。even(L)は、Lの2、4、6 ...アイテムのリストを返します。そして、各関数は、他の関数を呼び出します。これらの2つの関数は、単純な観察に基づいています。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の奇数メンバーです。次に、次のようにodd(L)を計算できます。Lがnullの場合、nullを返します。それ以外の場合は、最初のアイテムがL.itemであるリストを返します。その尾が偶数である間(L.next)。even(L)を計算するには:Lがnullの場合、nullを返します。それ以外の場合は、odd(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);
}
}
4

3 に答える 3

0

構文エラーがあります。このコードを試してください:

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);
  }
}
于 2012-09-30T16:07:41.010 に答える
0

これはうまくいくかもしれません:

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]
于 2012-10-01T21:44:32.940 に答える
0

これには非常に簡単な解決策があると思います。

リストの最初の要素から始めて、それをリストに入れoddeven.

だからあなたがしなければならないのはこれだけです、

  1. リストの先頭から始めて、odd関数に与えます。
  2. odd関数内でそれをリストに格納し、次の関数をodd呼び出しますeven
  3. even関数内でそれをリストに格納し、次の関数をeven呼び出しますodd
  4. null になるまで、これらの手順を続けます。
于 2012-09-30T08:54:23.970 に答える