小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題

 看風(fēng)景D人 2014-09-20

約瑟夫環(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ò)程

復(fù)制代碼
#include<iostream>
using namespace std;

struct ele {
    int no;
    struct ele *link;
} main() { 

    struct ele *h, *u, *p;
    int n, m, i;
printf("Please input n&m:\n");
scanf("%d%d", &n, &m);/*輸入n和m*/ h = u = (struct ele *) malloc(sizeof(struct ele));/*形成首表元*/ h->no = 1; for (i = 2; i <= n; i++)/*形成其余的n-1個(gè)表元*/ { u->link = (struct ele *) malloc(sizeof(struct ele)); u = u->link; u->no = i;/*第i個(gè)表元置編號(hào)i*/ } u->link = h;/*末表元后繼首表元,形成環(huán)*/
puts("\nThe numbers of who will quit the cycle in turn are:");
while (n) { for (i = 1; i < m; i++) /*掠過(guò)m-1個(gè)表元*/ u = u->link; p = u->link;/*p指向第m個(gè)表元*/ u->link = p->link;/*第m個(gè)表元從環(huán)中脫鉤*/ printf("%4d", p->no); free(p);/*釋放第m個(gè)表元占用的空間*/ n--; } printf("\n\n Press any key to quit...\n"); getchar(); }
復(fù)制代碼

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多