約瑟夫環的實現

2021-06-09 13:08:00 字數 540 閱讀 1262

用迴圈鍊錶實現的,思路很簡單,只是要注意指標的修改,程式設計基礎差的容易出錯。

/*約瑟夫環 - 迴圈鍊錶實現

author : milo.wang

date : 2012/9/15

*/#include using namespace std;

typedef struct node node, *nodeptr;

void josephusring(int n, int k, int m)

else

if(i+1 == k)

s = p;

p->num = i+1; }

while(1)

printf("%d\n",s->next->num);

p = s->next;

s->next = p->next;

free(p);

if(p == s)

s = s->next; }}

int main(int argc, char *argv)

約瑟夫環實現

約瑟夫環問題,這是乙個很經典演算法,處理的關鍵是 偽鍊錶 問題描述 n個人圍成一圈,從第乙個人開始報數,報到m的人出圈,剩下的人繼續從1開始報數,報到m的人出圈 如此往復,直到所有人出圈。模擬此過程,輸出出圈的人的序號 1 2 3 4 5 6 7 8 3,6 出圈 剩下7 8 1 2 4 5 7 8...

約瑟夫環的實現

首先介紹一下約瑟夫環 約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 ...

約瑟夫環的實現

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。如圖 我們有由十個節點組成的環形鍊錶,其中資料域的值為編...