迴圈鍊錶的運用 約瑟夫環

2022-05-10 17:09:18 字數 1110 閱讀 8834

今天寫迴圈煉表裡的約瑟夫環(嚴蔚敏版資料結構題集)

問題描述:

約瑟夫問題的一種描述是:編號為1,2,3,4……,n的n個人按順時針方向圍坐一圈,每個人持有乙個密碼(正整數)。一開始任選乙個正整數作為報數的上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1開始報數,如此下去,直至所有人的全部出列為止。試設計乙個程式求出出列順序。

基本要求

利用簡單的單向迴圈列表儲存結構模擬此過程,按照出列的順序印出各人的編號。

測試資料

m的初值為20;n=7,7個人的密碼分別為:3,1,7,2,4,8,4,首先m的值為6(正確的出列順序為6,1,4,7,2,3,5)。

**如下:

#includeusing

namespace

std;

typedef

struct

lnode

*linklist;

void joseph(int n,int k,int *m)

else

}p->next=list;

p=list;//

建立迴圈鍊錶完畢

for(i=0;i1;i++)

cout

";//

輸出第乙個報數人

int q=p->data;//

記錄第乙個報數人,等會要用到其密碼值

r->next=p->next;

free(p);

p=r->next;

while(p->next!=p)

cout

q=p->data;

r->next=p->next;//

刪除結點p

free(p);

p=r->next;

}cout

";//

輸出最後乙個結點

}int

main()

希望我能繼續堅持,雖然這幾天在考試,都忙著複習各科。今天考英語,丟了節操,接受了良心的譴責,不過下午的毛概我真的堅決不同意進行不公平的行為,做人要有自己的底線。

2013-01-21  20:40:00

迴圈鍊錶(約瑟夫環)

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。要通過輸入n,m,k三個正整數,來求出列的序列。這個問題採用的是典型的...

迴圈鍊錶應用 約瑟夫環

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。include includetypedef struct node ...

單向迴圈鍊錶 約瑟夫環

寫個約瑟夫環,檢驗一下自己的學習狀況.include define elemtype int typedef struct lnodesqlist void initlist sqlist l,elemtype n void round sqlist l,int m,int n int main v...