0

我已经尝试编写此代码,但它似乎并没有做太多,我对 lisp 列表的概念有点陌生,因此我不知道我应该做什么,无论如何这是我尝试过的:

    import java.util.*;
    public class removNum{
      public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a list (of integers): ");
        String str = in.nextLine();
        LispList<Integer> list = parseIntLispList(str);
        System.out.println("The list you entered is:");
        System.out.println(list);
        System.out.println("Enter an integer:");
        list = removePos(list);
        System.out.println(list); 
     }
     public static LispList<Integer> parseIntLispList(String str){
       String line = str.trim();
       String contents = line.substring(1,line.length()-1).trim();
       if(contents.length()==0)
          return LispList.empty();
       String[] nums = contents.split(",");
       LispList<Integer> list = LispList.empty();
       for(int i=nums.length-1; i>=0; i--){
          String num = nums[i].trim();
          list = list.cons(Integer.parseInt(num));
       }
       return list;
     }
     public static LispList removePos(LispList list, int n){
        if(0==n){
         return list.getTail();
        }
       else{
         return new LispList(list.getHead(),removePos(list.getTail(),n-1));
       }
     }
  }

好吧,基本上我要做的是编写一个递归方法,它接受一个列表和一个整数 x,并删除列表中位置 x 处的整数,例如,如果列表是 [2,5,6,40,8 ,9,45] 并且整数为 2,该方法应返回 [2,5,40,8,9,45] 以便从列表中删除位置 2 处的整数。

我不希望任何人为我写出解决方案,但我们将不胜感激朝正确方向轻推。提前致谢。

4

1 回答 1

0

http://www.dreamincode.net/forums/topic/317223-delete-elements-in-the-list-using-lisplist/回答了一个非常相似的问题

我不知道LispList您使用的类是否实现了java.util.List接口,但如果实现了,您可能会查看http://docs.oracle.com/javase/7/docs/api/javaindexOf中描述的andsubList方法/util/List.html

于 2013-10-20T19:51:03.490 回答