我已经尝试编写此代码,但它似乎并没有做太多,我对 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 处的整数。
我不希望任何人为我写出解决方案,但我们将不胜感激朝正确方向轻推。提前致谢。