前幾天去佳龍面試 有一道演算法題
用雙鏈表解決約瑟夫環問題
當時是和兩個朋友一塊去的 他們看完題直接走了 其實我是不想走的 但是從眾心理太強
我也走了 後天周一 我要再去一趟**
其實我當時也不知道什麼是約瑟夫環 就走了 而且面試的人態度很不好
這裡是實現
class doublenode
}class doublelist
// 新增節點
public void addnode(doublenode node)
//刪除節點
public void removenode(int data)
if(data==last.data)
for (int i = 0; i < size; i++) else }}
public void displaylist()
/*** @param k
* @param m
*/public static void yusefu(int k,int m)
doublenode current = dl.first;
for (int i = 0; i < k-1; i++)
while (dl.size!=1)
dl.removenode(killnode.data);
if(dl.size==1)
current = killnode.next;
}dl.displaylist();
}}
其實很簡單 只是大學沒怎麼學資料結構 氣人哪 約瑟夫環鏈表解決演算法
1.起源 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報...
運用迴圈單鏈表解決約瑟夫環問題
include using namespace std struct node 構造結點 為結點初始化 分配空間 int data node next class josephus void create 鍊錶的初始化 void output 輸出數值 private node head 迴圈鍊錶的...
迴圈鍊錶解決約瑟夫環問題
題目要求的約瑟夫環操作 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人...