基本上,问题是:
对此特定列表的最终解决方案应该是“ i”。
我对此的解决方法是:
public class listexercise {
public static DLL<Character> removeFront(DLL<Character> list){
DLLNode<Character> tmp = list.getFirst().succ;
while(tmp != null){
list.delete(tmp);
if(tmp.succ == null) {
tmp.pred.succ = null;
break;
}
tmp = tmp.succ.succ;
}
return list;
}
public static DLL<Character> removeEnd(DLL<Character> list){
DLLNode<Character> tmp = list.getLast().pred;
while(tmp != null){
list.delete(tmp);
if(tmp.pred == null) {
tmp.succ.pred = null;
break;
}
tmp = tmp.pred.pred;
}
return list;
}
public static DLL<Character> rec(DLL<Character> list, int n){
if(list.length() == 1)
return list;
else if(n%2 == 1)
return rec(removeFront(list), n++);
else if(n%2 == 0)
return rec(removeEnd(list), n++);
return list;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
DLL<Character> list = new DLL<Character>();
String input = s.nextLine();
char[] parts = input.toCharArray();
for(int i=0; i<parts.length; i++)
list.insertLast(parts[i]);
System.out.println(rec(list,1).toString());
}
}
这使我在removeFront或removeEnd上获得了NPE。但是,如果我一次只专门使用其中一个,则它们可以完美工作,但是当我将它们递归使用时,就会出现问题。
有什么办法解决这个问题吗?
答案 0 :(得分:1)
可能还有其他问题,但是Try onClickHandled property
<input type="checkbox" onclick="onClickHandler()" id="box" />
<script>
function onClickHandler(){
var chk=document.getElementById("box").value;
//use this value
}
</script>
在这里很明显。该语句将执行方法调用,然后递增将永远不会使用的rec(removeFront(list), n++)
的值。
将此更改为n