n個小孩圍成圈,丟手帕,從第start個小孩開始丟,每到第step個小孩出局;接著從下乙個小孩開始,直到最後乙個小孩為止,遊戲結束。
/**
*@author jiaozl
* cyclink cyclink = new cyclink();
* cyclink.setlen(5);
* cyclink.createlink();
* cyclink.setstart(2);
* cyclink.setstep(2);
* cyclink.show();
* cyclink.play();
*/public
class
cyclink
/*** 設定從第幾個人開始數數
*/public
void
setstart(int start)
/*** 設定step
*/public
void
setstep(int step)
/*** 開始play
*/public
void
play()
while(this.len!=1)
child temp2 = temp;
while (temp2.nextchild!=temp)
// 將疏導step的小孩,退出圈圈
temp2.nextchild = temp.nextchild;
temp = temp.nextchild;
this.len--;
}system.out.println("最後剩下的小孩:" + temp.no);
}/**
* 初始化環形鍊錶
*/public
void
createlink() else else }}
}/**
* 列印環形鍊錶
*/public
void
show() while(temp!=this.firstchild);
}}class child
}
環形鍊錶 約瑟夫問題
問題描述josephu問題 設編號為1,2,3 n的n個人圍坐成一圈,約定編號為k的人從1開始報數,數到m的那個人出列,他的下一位從1開始報數,數到m那個人又出列,直到所有人都出列為止,由此產生乙個出佇列編號的序號。解決方法 建立乙個輔助指標helper,指向頭指標的前乙個節點 當小孩報數的時候,f...
約瑟夫問題 單向環形鍊錶
約瑟夫問題的示意圖 josephu 問題 josephu 問題為 設編號為 1,2,n 的 n 個人圍坐一圈,約定編號為 k 1 k n 的人從 1 開始報數,數到 m 的那個人出列,它的下一位又從 1 開始報數,數到 m 的那個人又出列,依次類推,直到所有人出列為止,由此 產生乙個出隊編號的序列。...
單向環形鍊錶(約瑟夫問題)
josephu 問題 josephu問題為 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人 從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生 乙個出隊編號的序列。提示用乙個不帶頭結點的迴圈鍊錶來處理josep...