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

2021-09-24 15:31:37 字數 1191 閱讀 5730

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

n個人坐滿一張圓桌,為迴圈表

現在從第s個人開始,數到第m個人出列,然後下乙個人從新報數,數到m個人出列,直到重複到所有人為止。為從s開始後迴圈m-1次,得到結果輸出然後刪除,直到表為空。

//鍊錶結點類

class

link

};

//單迴圈鍊錶

class

lnklist

//建立單迴圈鍊錶

void

josephus

(int n, int s, int m)

while

(search-

>data != s)

//mark標誌為search前的結點,search為找到的結點

while

(pre-

>next != pre)

cout << search-

>data <<

"\n"

; del = search;

pre-

>next = search-

>next;

search = search-

>next;

delete del;

} cout << pre-

>data;

delete pre;}}

;int main()

lnklist arl

(n);

arl.

josephus

(n, s, m)

;return0;

}

//陣列實現

class

arrlist

position =0;

curlen = maxsize;}~

arrlist()

void

deletel

(int p)

}void

question

(int s, int m)}}

;int main()

出佇列乙個,就刪除乙個。直到為空。

鍊錶應用 Josephus問題

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

Josephus問題的鍊錶實現

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

迴圈鍊錶Josephus問題(c,cpp

問題描述 設有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m個的人出列,然後從出列的下乙個人重新開始報數,數到第m個的人又出列,如此反覆直到所有的人出列為止。josephus.c 1 include 2 include 3 typedef struct lnode 4lnode,linkl...