資料結構 約瑟夫環問題

2021-07-24 04:57:46 字數 1026 閱讀 8016

實驗一線性表的應用

實驗目的和要求:

通過實驗進一步理解線性表的邏輯結構和儲存結構,提高使用理論知識指導解決實際問題的能力,熟練掌握鍊錶的實際應用。

主要內容:

題目1 :josephus環問題

問題描述:

約瑟夫(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)。

1.建鍊錶按書上寫,不帶頭節點的迴圈鍊錶

2.遍歷  刪除找前驅,更新m 值,data域 m

=20,或6,序號,data域多一項

// 約瑟夫環問題.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

using namespace std;

typedef struct nodelnode,*linklist;

linklist creat_linklist1(int n)

if (r != null)

r->next = l;  //最後乙個元素指向頭結點

return l;

}void joseph(linklist l, int m)

cout m;

linklist l1;

cout<<"請輸入總人數n:";

cin>>n;

l1 = creat_linklist1(n);

joseph(l1,m);

return 0;

}

資料結構 約瑟夫環問題

1.問題描述 約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。鍊錶思路 我是通過單鏈表實現的,首先要思考...

資料結構 約瑟夫環問題

約瑟夫問題是個有名的問題 n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。例如n 6,m 5,被殺掉的順序是 5,4,6,2,3。分析 1 由於對於每個人只有死和活兩種狀態,因此可以用布林型陣列標記每個人的狀態,可用true表示死,false表示活。2 開始時每個人...

資料結構之約瑟夫環問題

有 n 個人,按 1 到 n 編號,要求從第 s 個人開始迴圈報數,報到 m 時,此人出列,再從下乙個人開始報 m個數,直到所有人出列。給出 n 個人出列的順序。include stdio.h typedef struct nodelnode,linklist void creatjoseph li...