Josephus問題的鍊錶實現

2021-06-16 07:03:09 字數 653 閱讀 7799

據說著名猶太歷史學家 josephus有過以下的故事:在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和他的朋友並不想遵從,josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過了這場死亡遊戲。

#include struct node

;node* construct( node* head, int currentdata, int max )

else

return current;

}void print( node* current )

print( current->next );

}// include current

node* getnext( node* current, int step )

return parent;

}void printjosephus(node* current, int step )

else }

void main()

使用鍊錶實現Josephus環問題

分析 先建立乙個有total個結點的鍊錶,然後頭尾相連,構成乙個環形鍊錶。從第乙個結點開始數到第m個結點,從鍊錶中刪除對應結點,表示小孩出圈。然後再從被刪除結點的下乙個結點重新開始計數,直到鍊錶中剩下最後乙個結點。include stdlib.h include stdio.h define len...

鍊錶應用 Josephus問題

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被人抓到,於是決定了乙個自殺方式 41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人...

Josephus問題,陣列和鍊錶(C 實現)

設有n個人圍坐在圓桌周圍,現從第s個人開始報數,數到第m的人出列,然後從出列的下乙個人重新開始報數,數到第m的人又出列,如此反覆直到所有的人全部出列為止。n個人坐滿一張圓桌,為迴圈表。現在從第s個人開始,數到第m個人出列,然後下乙個人從新報數,數到m個人出列,直到重複到所有人為止。為從s開始後迴圈m...