迴圈鍊錶Josephus問題(c,cpp

2022-03-24 12:23:16 字數 1498 閱讀 7111

問題描述:

設有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m個的人出列,然後從出列的下乙個人重新開始報數,數到第m個的人又出列,.......,如此反覆直到所有的人出列為止。

josephus.c

1 #include 2 #include 3 typedef struct

lnode

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 3

using

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...