2012-09-30 142 views
0

我正在處理鏈接列表問題,這裏是我的代碼的問題,我有三個錯誤,請幫助。java鏈接列表

編寫一個名爲「奇數」的函數,該函數接受一個鏈表並返回奇數元素。實際上,寫出兩個叫做「奇怪」和「偶數」的函數。奇數(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)。你的主函數應該從命令行讀取一個正整數列表,用-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); 
} 
} 
+1

@MatinKh功課標籤已經過時了,因爲最近...... –

+0

喜,這是家庭作業,但我已經在工作,但仍然出現錯誤,我不希望任何人給我寫代碼,我只需要提示我的錯誤。謝謝。 –

+0

你有什麼錯誤? – Ishtar

回答

0

我相信這有一個非常簡單的解決方案。

您必須從列表的第一個元素開始,將它放在odd列表中,並在even旁邊。

因此,所有你需要的就是這個,

  1. 開始從列表的頭部,分給odd功能。
  2. odd函數中將其存儲在odd列表中,並使用下一個函數調用even函數。
  3. even函數中將其存儲在even列表中,並使用下一個函數調用odd函數。
  4. 繼續這些步驟,直到您達到空。
+0

謝謝。這是我第一次編程,所以對我來說很難。 –

+0

您需要進一步的幫助?如果是的話,讓我知道。 –

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); 
    } 
} 
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]