今天寫迴圈煉表裡的約瑟夫環(嚴蔚敏版資料結構題集)
問題描述:
約瑟夫問題的一種描述是:編號為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)。
**如下:
#includeusingnamespace
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...