Bir dizi listesi veri yapısında Josephus sorununu çözmeye çalışıyorum ve görev ListIterator'ı kullanmak. Kaldırma kısmına takılıyorum.Listiterator ile ilgili kaygıları kaldır java
10 askerin peşine düştüğümü söyleyelim - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Ve her 3 askeriye adım atmalıyım - yani 3, sonra 6, sonra 9, vb.
başarıyla 3 kaldırmak mümkün, ama bir dahaki sefer 7 kaldırır ve 6. kodumu gözden geçirin ve yanlış ne yapıyorum söyleyebilir:
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;
}
Sorun şu ki, elemanlar endekste hareket ediyor ve mantığıma göre element 7, '5' indeksinde (mantıksal olarak 6) ve böylece siliniyor. Bunu nasıl durduracağımı anlamak istiyorum. – user4261932