C語言約瑟夫環的實現

2022-09-26 09:57:11 字數 691 閱讀 6872

c語言約瑟夫環的實現

一、典故:

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

41個人排成乙個圓圈,由第1個人 開始報數,每數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人都自殺身亡為止。然而josephus 和他的朋友並不想遵從,josephus要 他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,於是逃過了這場死亡遊戲。

二、用迴圈鍊錶實現

1.約瑟夫環實現

slistnode* josephcycle(slistnode* phead, datatype x)

while(--m)

//delete替換法

cur->data = cur->next->data;

slistnode* del = cur->next;

cur->next = cur->next->next;

free(del);

del=null;

}2.測試

void testjosephcycle()

cur->next = list;

slistnode* ret = josephcycle(list, 3);

cout

C語言 實現約瑟夫環

鏈式解法 include include typedef struct sqlist sqlist 建立解約瑟夫環需要的鍊錶,該鍊錶不帶頭節點 sqlist creatlist int length p next null 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...

C語言實現約瑟夫環

直接上 define crt secure no warnings include includetypedef struct listnode listnode void create listnode firstnode,int m 建立單向迴圈鍊錶 int i listnode pre fir...

C語言實現約瑟夫環

一共有n個人,圍成一圈,從一開始報數,數到m的人出局,然後重新開始報數。算出出局的人的順序 如果最後只能剩下乙個人,請問是幾號?include includetypedef struct node linklist,node linklist init ring int num return hea...