約瑟夫斯(1,9,5)這種構造方法就是從1的人開始數,壹***9個人,數到5的人就滾出隊列。
我用了叠代器,不用它也可以。
List使用LinkedLisk,ArrayList或者Vector也可以。
我沒有仔細考慮過。有問題我會溝通的。
導入Java . util . iterator;
導入Java . util . linked list;
公共類Main {
公共靜態void main(String[] args) {
約瑟夫斯測試=新約瑟夫斯(1,9,5);
for(整數I:測試){
system . out . println(I);
}
}
}
約瑟夫斯類實現Iterable & lt整數& gt{
私人鏈接列表& lt整數& gt堆棧;
private int優先;//從哪個人那裏?
私有int鍵;//數幾個
私有int容量;//幾個人* * *
公共約瑟夫斯(整數優先,整數容量,整數關鍵字){
this.first = first
容量=容量;
this.key = key
this.stack = new LinkedList & lt整數& gt();
for(int I = 1;我& lt= this.capacityi++) {
this . stack . add(I);
}
for(int I = 0;我& ltthis . first-1;i++) {
this . stack . add(this . stack . remove());
}
}
公共叠代器iterator() {
返回新的Itr();
}
類Itr實現叠代器& lt整數& gt{
public boolean hasNext() {
回歸!stack . isempty();
}
公共整數next() {
for(int I = 0;我& ltkey-1;i++) {
stack . add(stack . remove());
}
返回stack . remove();
}
公共void remove() {
拋出新的UnsupportedOperationException("尚不支持。");
}
}
}