// yuesefuwenti.cpp : 定義控制台應用程式的入口點。
/*約瑟夫環(約瑟夫問題)是乙個數學的應用問題:
已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。
從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,
數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。
通常解決這類問題時我們把編號從0~n-1,最後結果+1即為原問題的解。
*///
#include "stdafx.h"
#include
#include "stdlib.h"
using namespace std;
typedef struct node
node;
/*建立迴圈單鏈表
日期:2023年11月4日
*/node * create(int n)
else
pret = p_node;
while (n_idx
p_node->data = n;
p_node->next = pret;
}return pret;
}int main()
printf("%d ", piter->next->data);
//刪除選擇到的節點
piter->next = piter->next->next;
piter = piter->next;
}printf("%d\n", piter->data);
deleteplist;
//推理,有點叼 至於數學推理,請看如下文章,說的很清楚
//
int last = 0; // f(1) = 0
for (int i = 2; i <= n; ++i)
cout << "the last one is : " << last + 1 << endl;
system("pause");
return 0;
}
採用迴圈單鏈表實現約瑟夫環
演算法的基本思想 利用鍊錶和陣列,約瑟夫環問題中的資料時人所在的位置,而這個資料時存在 第一元素 最後元素 並且 存在唯一的前驅和後繼,符合線性表的特點,由於需要模擬約瑟夫環的出列問題,可以採用順序表來實現 線性表,完成出列順序的輸出,核心演算法主要分兩步 1 確定需要刪除的位置 2 設定並刪除該位...
迴圈單鏈表 Joseph約瑟夫環問題
package com.linkedlist author qw date 2020 8 11 22 02 public class josephcircle 迴圈單鏈表 class circlesinglelinkedlist child cur null 輔助指標,幫助構建迴圈鍊錶 for in...
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...