一、問題描述:約瑟夫問題
乙個旅行社要從n個旅客中選出一名旅客,為他提供免費的環球旅行服務。旅行社安排這些旅客圍成乙個圓圈,從帽子中取出一張紙條,用上面寫的正整數m作為報數值。遊戲進行時,從第s個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人被淘汰出列,然後從他順時針方向上的下乙個人開始重新報數,如此下去,直到圓圈中只剩下乙個人,這個最後的倖存者就是遊戲的勝利者,將得到免費旅行的獎勵。其中資料結構採用單迴圈鍊錶。
二、任務要求
用單迴圈鍊錶解決約瑟夫問題。
三、測試資料
輸入說明,輸入的第一行表示總的旅客數,輸入的第二行表示報數值,輸入的第三行表示報數人的起始編號。
輸入樣例:
9 5
1 輸出說明,輸出這n個人的淘汰順序
輸出樣例:
5 1
7 4
3 6
9 2
8
#include
#include
typedef struct node linklist;
int count = 0;
int create(linklist *head, int n)
return0;}
int func(linklist *head, int startnum, int circdata)
while (count >= 1)
printf("%d\n", p->next->num);
p->next = p->next->next;
p = p->next;
count--;
}return0;}
int main()
資料結構 約瑟夫問題
約瑟夫問題 上課結束,大家聽說第一周沒有程式設計題目,立刻就被鄙視了,為了糾正這個錯誤,咱們本週就來做點簡單題目。本題要求用迴圈鍊錶實現 約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1,2,3,順時針數到m...
資料結構 約瑟夫問題
約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為k 的人開始,從1開始順時針報數1,2,3,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,依此重複下去,直到圓桌周圍的人全部出列...
資料結構 約瑟夫問題的C 實現
編號為1,2 n的n個人按順時針方向圍坐一圈,每人持有乙個密碼。一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他的順時針方向上的下乙個人開始重新從1報數,如此下去,直到所有人全部出列為止。試設計乙個程式求出出...