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

2021-10-17 10:59:26 字數 1417 閱讀 3746

問題描述:

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

基本要求:

(1)利用單迴圈鍊錶作為儲存結構模擬此過程;

(2)鍵盤輸入總人數、初始報數上限值m及各人密碼;

(3)按照出列順序輸出各人的編號。

#include

using

namespace std;

typedef

struct josephring node;

/** * 初始化約瑟夫環

* @param n 成員數目

* @param array 每個人的密碼

* @return 頭結點

*/node *

init

(int n,

int array)

current-

>next = head;

//尾節點連線到首結點,形成迴圈鍊錶

return head;

//返回首結點

}/**

* 遍歷約瑟夫環,報數出列

* @param head 頭結點

* @param length 約瑟夫環長度

* @param password 初始密碼

*/void

function

(node *head,

int length,

int password)

for(

int i =

1; i <= length;

++i)

temp = pre-

>next;

//儲存要刪除的節點

next = temp-

>next;

//下乙個節點

password = temp-

>password;

//修改密碼

cout << temp-

>number << endl;

//輸出出列序號

pre-

>next = next;

//連線鍊錶,去除中間節點

free

(temp)

;//釋放中間節點}}

intmain()

node *head =

init

(length, array)

;function

(head, length, m)

;return0;

}

資料結構與演算法課程設計

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...

資料結構與演算法課程設計 Prim演算法

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...

資料結構與演算法課程設計 Prim演算法

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...