課程設計 約瑟夫環

2021-08-25 23:28:06 字數 1323 閱讀 6675

題目:約瑟夫環

【問題描述】

約瑟夫(joseph)問題的一種描述是:編號為1,2,.....,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)。

#include "iostream"

using namespace std;

typedef struct lnode

lnode,*linklist; // 結點型別,指標型別

int insert(linklist &l,int password, int num) //引用型別的引數

else

return 0;

}void joseph(linklist &l,int k,int m) //引用型別的引數

q->next=p->next;

cout

m=p->password; //更新m的值

free(p);

k--; //人數減1

p=q->next;

} cout<>n;

cout<

cin>>m;

for(i=1;i<=n;i++)

p->next=head; //構成約瑟夫環

cout<

執行結果如下圖:

結構體定義中

typedef struct lnode

lnode,*linklist; // 結點型別,指標型別

typedef 宣告,簡稱 typedef,為現有型別建立乙個新的名字。

typedef struct node

lnode, *linklist;

lnode就相當於struct node ,起了乙個別名。

*linklist也相當於struct node

也就是:

lnode 等價 struct node

linklist 等價 lnode* 等價 struct node*

lnode a;等價 struct node a;

linklist p;等價 lnode* p;等價 struct node* p;

《資料結構與演算法》課程設計 32 約瑟夫環

問題描述 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數的上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他的順時針方向上的下乙個開始重新從1報數,如此下去,直至所有人全部出列為止,...

資料結構課程設計 (一)線性結構(約瑟夫環)

joseph環 任務 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人全...

課程設計表

create database drug 藥品表 create table drug did nvarchar 10 primary key,dname nvarchar 50 not null,dimage nvarchar 100 not null,dmodel nvarchar 10 chec...