問題描述:
設有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m個的人出列,然後從出列的下乙個人重新開始報數,數到第m個的人又出列,.......,如此反覆直到所有的人出列為止。
josephus.c
1 #include 2 #include 3 typedef structlnode
4lnode,*linklist;89
void createlist(linklist *l,int
n)10
23else
2427 tail =p;28}
29 tail->next = *l;30}
3132
void
printlist(linklist l)
3342 printf("
%d\n
",p->data);43}
4445
void
delelem(linklist l)
4653
54 linklist locatepos(linklist l,int
m)55
62return
p;63}64
65void josephus(linklist l,int n,int s,int
m)66
75else
7679
delelem(q);
80 p = q->next;81}
82 printf("
%d",p->data);83}
84int
main()
85
josephus.cpp
1 #include 2 #include 3using
namespace
std;
4 typedef struct
lnode
5lnode,*linklist;
910 linklist createlist(linklist &l,int
n)11
23else
2427 tail =p;28}
29 tail->next =l;30}
3132
void
printlist(linklist l)
3340 cout4243
void
delelem(linklist p)
4452
53 linklist locatepos(linklist l,int
k)54
61return
p;62}63
64void josephus(linklist l,int n,int s,int
m)65
79 cout80free
(p);81}
82int
main()
83
迴圈鍊錶應用 Josephus
include using namespace std typedef int elemtype struct nodetype void josephus int n,int m,int k p data n p next head p head while p data p next data ...
鍊錶應用 Josephus問題
據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被人抓到,於是決定了乙個自殺方式 41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人...
josephus 約瑟夫的迴圈鍊錶實現
有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m 的人出列,然後從出列的下乙個人重新開始報數,數到第m的人 又出列,如此反覆直到所有的人全部出列為止。include include using namespace std typedef struct lnodelnode,josephus...