|
約瑟夫環(huán)問(wèn)題可以簡(jiǎn)單的使用數(shù)組的方式實(shí)現(xiàn),但是現(xiàn)在我使用循環(huán)鏈表的方法來(lái)實(shí)現(xiàn),因?yàn)樯衔缈吹揭坏烂嬖囶}規(guī)定使用循環(huán)鏈表解決約瑟夫環(huán)問(wèn)題。 什么是約瑟夫環(huán)? “約瑟夫環(huán)是一個(gè)數(shù)學(xué)的應(yīng)用問(wèn)題:已知n個(gè)人(以編號(hào)1,2,3...n分別表示)圍坐在一張圓桌周?chē)?。從編?hào)為k的人開(kāi)始報(bào)數(shù),數(shù)到m的那個(gè)人出列;他的下一個(gè)人又從1開(kāi)始報(bào)數(shù),數(shù)到m的那個(gè)人又出列;依此規(guī)律重復(fù)下去,直到圓桌周?chē)娜巳砍隽?。”?a >百度百科中的解決辦法列出了很多,可以看到循環(huán)鏈表并不是最簡(jiǎn)單的方法) 這道面試題考察了循環(huán)鏈表的“創(chuàng)建”,“遍歷”和“刪除”。 創(chuàng)建的循環(huán)鏈表的結(jié)構(gòu)圖:
解決約瑟夫環(huán)問(wèn)題的過(guò)程
#include<iostream> using namespace std; struct ele { int no; struct ele *link; } main() { struct ele *h, *u, *p; int n, m, i;
|
|
|