給定資料版
//使用迴圈鍊錶來解決約瑟夫環問題
//需要對鍊錶實現的功能:
//1. 初始化鍊錶節點值
//2. 刪掉對應元素
//3. 返回對應值和序號
#include #include #define num 7
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef struct linknodelinknode, *linklist;// 指向結構體的指標
int members[num] = ;
// 設立尾指標的單迴圈鍊錶
status listinit_cl(linklist &l)
l->data = members[index];
l->number = index + 1;
l->next = l->next;
return ok;
}// 刪除第i個元素,並由number,data返回其序號和值
status listdelete_cl(linklist &l, int i, int &number, int &data)
//將原本的第乙個節點,置空,用來放置最初始的密碼,從第二個節點開始為個人賦值
//***這樣實現所有人都可以用相同的規律排除。***
//這樣會不會使得密碼為1的?不會。因為是用乙個與原本第乙個一樣的節點,等價於原本的第乙個人的報數。
//***重點在讓指標迴圈是指向l->next***
int main()
printf("第%d位被剩下\n", l->number);
return ok;
}
隨機數版本
//使用迴圈鍊錶來解決約瑟夫環問題
//需要對鍊錶實現的功能:
//1. 初始化鍊錶節點值
//2. 刪掉對應元素
//3. 返回對應值和序號
#include #include #include #define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef struct linknodelinknode, *linklist;// 指向結構體的指標
// 設立尾指標的單迴圈鍊錶
status listinit_cl(linklist &l, int given_people)
l->number = index + 1;
l->next = l->next;
return ok;
}// 刪除第i個元素,並由number返回其序號
status listdelete_cl(linklist &l, int i, int &number)
//將原本的第乙個節點,置空,用來放置最初始的密碼,從第二個節點開始為個人賦值
//***這樣實現所有人都可以用相同的規律排除。***
//這樣會不會使得密碼為1的?不會。因為是用乙個與原本第乙個一樣的節點,等價於原本的第乙個人的報數。
//***重點在讓指標迴圈是指向l->next***
int main()
printf("第%d位被剩下\n", l->number);
return ok;
}
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...
約瑟夫問題 約瑟夫環
約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...
Josephu 約瑟夫 約瑟夫環 問題
version 2019年08月08日 public class josepfu 建立乙個環形的單向鍊錶 class circlesinglelinkedlist 輔助指標,幫助構建環形鍊錶 boy curboy null for int i 1 i nums i else 遍歷當前的環形鍊錶 pu...