問題描述:約瑟夫問題的一種描述是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止。
實現約瑟夫環:
void joseph(int n, int m)p->next=list;//使鍊錶迴圈
p=list;//p指向頭結點
r=p;
//x迴圈刪除佇列中的結點,即出列
printf("出列者序列:");
while(p->next!=p)
r->next=p->next;
printf("%d ",p->num);
free(p);
p=r->next;
} printf("\n最後留下的人是:%d\n",p->num);
迴圈單鏈表 Joseph約瑟夫環問題
package com.linkedlist author qw date 2020 8 11 22 02 public class josephcircle 迴圈單鏈表 class circlesinglelinkedlist child cur null 輔助指標,幫助構建迴圈鍊錶 for in...
單鏈表實現約瑟夫環
語塞夫環問題 問題來歷 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再...
單鏈表實現約瑟夫環
約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從第乙個人開始報數,數到k的那個人出列 他的下乙個人又從1開始報數,數到k的那個人又出列 依此規律重複下去,直到圓桌只剩下乙個人。那麼如何用單鏈表來實現約瑟夫環呢,首先我們需要構建乙個帶環鍊錶,定義乙個指標c...