Java 中的 Lisp 列表



我已经尝试编写这段代码,但它似乎没有多大作用,我对 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 的整数从列表中删除。

不希望有人为我写解决方案,但朝着正确的方向推动将不胜感激。提前谢谢。

在 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/java/util/List.html 中描述的indexOfsubList方法。

最新更新