約瑟夫環 VC 實現

2021-04-28 01:38:08 字數 1028 閱讀 6777

問題描述:

設編號為1,2,、、、,n(n>0)的人按順時針方向圍坐一圈,每人持有乙個正整數密碼。開始時任意給出乙個報數上限值m,從第乙個人開始沿順時針方向自1起順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人起重新自1起順序報數;如此下去,直到所有人全部出列為止。

基本要求:

<1>初始上限值m和測試資料在程式中確定;

<2>用帶頭結點的單迴圈鍊錶作資料元素的儲存結構;

<3>把帶頭結點的單迴圈鍊錶作為抽象資料型別設計;測試資料:n=7;七個人的密碼:3,1,7,2,4,8,4.初始報數上限m=20.

本人編的源**:

#include

#include

#define null 0

typedef struct node

lnode,*linklist;

linklist creat_linklist(int personnum) //在單鏈表的尾部插人結點建立單鏈表,並完成

r->next=l->next;                       //讓單鏈表迴圈起來;

return l;                              //返回頭結點;

} void joseph(linklist head,int key,int personnum) //約瑟夫問題的實現;

key=p->code;                        

couts->next=p->next;                    //刪除p所指的結點;

head=s;                             //確立下一次迴圈開始的位置;

free(p);                            //釋放出列人所在結點的空間;

personnum--;                        //結點數減一;

} }

void main()

約瑟夫環實現

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

約瑟夫環的實現

用迴圈鍊錶實現的,思路很簡單,只是要注意指標的修改,程式設計基礎差的容易出錯。約瑟夫環 迴圈鍊錶實現 author milo.wang date 2012 9 15 include using namespace std typedef struct node node,nodeptr void j...

約瑟夫環的實現

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