約瑟夫環(改進1 0)

2022-02-23 15:07:38 字數 1932 閱讀 3619

給定資料版

//使用迴圈鍊錶來解決約瑟夫環問題

//需要對鍊錶實現的功能:

//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...