Ich versuche, das Josephus-Problem in einer ArrayList-Datenstruktur zu arbeiten, und die Aufgabe ist, ListIterator zu verwenden. Ich bleibe am entfernenden Teil hängen.Bedenken mit Listiterator entfernen Java
Sagen wir, ich habe folgende 10 Soldaten - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Und ich muss jeden dritten Soldaten treten - was bedeutet, 3 zu entfernen, dann 6, dann 9 und so weiter.
Ich bin in der Lage, erfolgreich 3 zu entfernen, aber das nächste Mal entfernt es 7 und nicht 6. Können Sie bitte meinen Code überprüfen und mir sagen, was ich falsch mache:
private static int suicide (List<Integer> list, int step) {
ListIterator<Integer> itr = list.listIterator();
while(itr.hasNext()&& list.size() != 1){
if((itr.nextIndex()+1) % step == 0) {
System.out.println(itr.previousIndex()+1);
itr.next();
itr.remove();
itr.next();
}
else {
itr.next();
}
if(!itr.hasNext()){
itr=list.listIterator();
}
}
return 0;
}
Ich verstehe, dass das Problem ist, dass die Elemente im Index bewegen und dass gemäß meiner Logik jetzt Element 7 im Index '5' (logisch 6) und damit entfernt wird. Ich möchte verstehen, wie man das stoppt. – user4261932