C語言實現單鏈表之約瑟夫環

2021-07-13 10:40:51 字數 373 閱讀 3064

typedef int datatype;

typedef struct seqlist

seqlist, *pseqlist;

pseqlist josephcircle(pseqlist phead, int m)///當頭結點為空,m<= 0時本題沒有意義

//迴圈何時結束

while (phead->pnext != phead)

phead = phead->pnext;

}return phead;}

本題的難點在於刪除節點時,它的前乙個節點如何找到,解決方法有兩種:

1.如上述方法,採用把後乙個節點的資料和當前節點交換,刪除後乙個節點。

2.定義乙個指向前乙個節點的指標

C語言單鏈表實現約瑟夫環

1.約瑟夫環問題 編號為1,2 n的人按順時針方向圍坐一圈,每個人持有乙個密碼 正整數 開始任選乙個整數作為報數上限m,從第乙個人順時針自1開始順時針報數,報到m時停止報數。報到m的人出列,將他的密碼作為新的m值,從他順時針方向上的下乙個人開始重新從1報下去,如此下去,直到所有的人全部出列為止。例如...

C語言單鏈表實現約瑟夫環

前兩天朋友給我發來乙個題目,問我能不能用c語言鍊錶實現。13個人圍成一圈,從第1個人開始順序報號1,2,3。凡報到 3 者退出圈子,找出最後留在圈子中的人原來的序號。要求用鍊錶實現。看了題目以後發現其實是約瑟夫環,是乙個數學應用問題。約瑟夫環又稱為約瑟夫問題 丟手絹問題。一群人圍在一起坐成環狀,從某...

C 之約瑟夫環

問題原型 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和...