使用迴圈鍊錶實現約瑟夫環

2021-07-05 14:14:08 字數 768 閱讀 7055

約瑟夫演算法:n個人圍成一圈,每個人都有乙個互不相同的密碼,該密碼是乙個整數值,選擇乙個作為起點,然後順時針從1到k(k為起點人手中的密碼值)數數。數到k的人退出圈子,然後從下乙個開始繼續從1到j(剛退出圈子的人的密碼)數數,數到j的人退出圈子。重複上面的過程,直到剩下最後乙個人。

#include "stdio.h"

#define n 9

#define overflow 0

#define ok 1

typedef

struct lnodelnode,*linklist;

int keyw[n]=;

void joseph(linklist p,int m, int x);

int main()

p->next=lhead;

printf("please input the first record m: \n");

scanf("%d",&m);

printf("the output alignment is:\n");

joseph(p,m,n);

getch();

return ok;

}void joseph(linklist p,int m,int x)

p->next=q->next;

i=q->keyword;

printf("%d ",q->keyword);

free(q);

joseph(p,i,x-1);

}

迴圈鍊錶實現約瑟夫環

約瑟夫問題 有n個人圍坐一圈,從第k個人開始數,數到m的那個人出隊。知道最後乙個人出隊。有11個人,從第2個人開始數,數到3的那個人出隊。如下簡圖 這裡有兩個關鍵 1 建立迴圈佇列 不能有頭結點 2 隔m 1步取出該節點 程式如下 include using namespace std typede...

約瑟夫環 迴圈鍊錶實現

題目 約瑟夫環的一種描述為 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直到所...

約瑟夫環,迴圈鍊錶實現

約瑟夫環的定義就不再贅述,直接上 如果朋友能看完這個 相信你能理解接下面這個小故事。有個人想從這個世界上消失,但是他又不想死,他想到了乙個辦法,他可以把另外乙個人殺了,然後再用這個人的身份生活下去。這個小故事與約瑟夫環無關 include include struct node int main e...