資料結構 迴圈單鏈表之約瑟夫問題

2021-08-19 20:13:58 字數 1137 閱讀 4919

約瑟夫問題的由來:

據說著名猶太歷史學家 josephus有過以下的故事:在羅馬人占領喬塔特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓

圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而

josephus 和他的朋友並不想遵從,josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過

了這場死亡遊戲。看來功課學得好關鍵時刻可以救命啊!!! 哈哈。。。

簡單實現了乙個單鏈表以對約瑟夫問題的求解。

/*

迴圈鍊錶:迴圈單鏈表

示例:約瑟夫環

*/typedef struct lnode lnode,*linklist;

/*

function:初始化約瑟夫環

*/linklist createlinklist(int n)

//注釋這行的目的是為了去除頭結點,我們的資料節點從第乙個開始

//l = (linklist)malloc(sizeof(lnode));//頭結點

//r = l;

int j = 1;

int x;

scanf_s("%d", &x);

while (j<=n)

else

if (j == n)

j++;

scanf_s("%d", &x);

} //指向第乙個節點,形成閉環

r->next = l;

return l;

}

/*

function:依次取出滿足條件的資料

以上為約瑟夫問題迴圈單鏈表的基本實現,幫助我們進一步熟悉迴圈單鏈表;我們還可以通過更高階的方式實現:遞迴,好吧,這就留給下次思考和實現了!

資料結構 迴圈鍊錶之約瑟夫問題

include include include using namespace std define elemtype string typedef struct lnode lnode,listq 迴圈鍊錶初始化 頭針指lq向最後乙個資料 bool initiallist listq lq ito...

資料結構之約瑟夫迴圈鍊錶

public class test public class joseph 如果不是首節點 node newnode newnode i,null 建立乙個新節點 pre.next newnode 為當前節點儲存下個節點 pre newnode 將新節點設為當前節點 if i total int c...

資料結構之約瑟夫環問題

有 n 個人,按 1 到 n 編號,要求從第 s 個人開始迴圈報數,報到 m 時,此人出列,再從下乙個人開始報 m個數,直到所有人出列。給出 n 個人出列的順序。include stdio.h typedef struct nodelnode,linklist void creatjoseph li...