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