(本題要求用迴圈鍊錶實現)
約瑟夫問題是乙個經典的問題。已知n個人(不妨分別以編號1,2,3,…,n 代表)圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1, 2, 3, …,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,…依此重複下去,直到圓桌周圍的人全部出列。
輸入:n,k,m
輸出:按照出列的順序依次輸出出列人的編號,編號中間相隔乙個空格,每10個編號為一行。
非法輸入的對應輸出如下
a)輸入:n、k、m任乙個小於1
輸出:n,m,k must bigger than 0.
b)輸入:k>n
輸出:k should not bigger than n.例輸入
9,3,2
輸出4 6 8 1 3 7 2 9 5
定義迴圈鍊錶的結點
typedef struct cirlinklistcirlinklist, * clnode; //定義迴圈鍊錶儲存結構
生成煉表頭結點
cirlinklist * cl = (clnode)malloc (sizeof(cirlinklist)); //定義表頭指標
cl->next = 0; //初始化
構建鍊錶
//構建迴圈鍊錶
int x = n;
while(x)
temp->next = cl->next; // 指向表頭
注意:在最後要使表尾指向表頭。
尋找第k個結點
//在鍊錶中找到編號為k的結點
temp = cl->next;
while(temp->data != k)
從鍊錶中刪除結點
//從鍊錶中刪除第m個結點
int flag = 1, column = 1;
for(int j = n; j >= 1; )
}temp = temp->next;
if(temp->data != -1)
flag ++;}}
資料結構 約瑟夫問題
約瑟夫問題 上課結束,大家聽說第一周沒有程式設計題目,立刻就被鄙視了,為了糾正這個錯誤,咱們本週就來做點簡單題目。本題要求用迴圈鍊錶實現 約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1,2,3,順時針數到m...
資料結構 約瑟夫問題
約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為k 的人開始,從1開始順時針報數1,2,3,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,依此重複下去,直到圓桌周圍的人全部出列...
資料結構 約瑟夫環問題
實驗一線性表的應用 實驗目的和要求 通過實驗進一步理解線性表的邏輯結構和儲存結構,提高使用理論知識指導解決實際問題的能力,熟練掌握鍊錶的實際應用。主要內容 題目1 josephus環問題 問題描述 約瑟夫 joseph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼...