問題描述
josephu問題:設編號為1,2,3…n的n個人圍坐成一圈,約定編號為k的人從1開始報數,數到m的那個人出列,他的下一位從1開始報數,數到m那個人又出列,直到所有人都出列為止,由此產生乙個出佇列編號的序號。解決方法
建立乙個輔助指標helper,指向頭指標的前乙個節點
當小孩報數的時候,first指標和helper指標向後移m-1位
移動後進行出列,先將first指標後移一位,然後連線help指標
first = first.next
helper.next = first
**部分
需要實現的功能
n=5(五個人)k=1(從第乙個人開始數)
m=2(數兩下就出列)
package linklist;
public
class
josephu
/** * 約瑟夫演算法
* @param n 環形鍊錶中有多少小孩
* @param m 數幾下進行出圈
* @param k 從第幾個小孩開始報數
*/public
void
josephu
(int n,
int k,
int m)
//數數到要出圈的男孩那,進行出圈
while
(true
)for
(int i=
0; i1; i++
)//進行出圈
system.out.
print
(first.
getno()
+"->");
first = first.next;
helper.next = first;
}//輸出最後乙個男孩
system.out.
println
(first.
getno()
);}}
class
circle******linklist
else
//不為頭
}return head;
}//遍歷迴圈鍊錶
public
void
showcirclelinklist
(boy head)
while
(sign != head);}
}class
boypublic
intgetno()
}
Java環形鍊錶 約瑟夫問題
n個小孩圍成圈,丟手帕,從第start個小孩開始丟,每到第step個小孩出局 接著從下乙個小孩開始,直到最後乙個小孩為止,遊戲結束。author jiaozl cyclink cyclink new cyclink cyclink.setlen 5 cyclink.createlink cyclin...
約瑟夫問題 單向環形鍊錶
約瑟夫問題的示意圖 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...