近幾日比較火的一個問題介袜?為啥呢甫何?因為我們在學數(shù)據(jù)結構

一般說來,學習數(shù)據(jù)結構遇伞,都會寫一個約瑟夫環(huán)的算法沛豌?下面我就簡單說說,
對于這個規(guī)則就不細述了赃额。

分析:1 .首先要創(chuàng)建鏈表加派,創(chuàng)建一個循環(huán)鏈表?是要頭結點呢跳芳? 其實都可以
2 .整個實現(xiàn)過程其實就是循環(huán)鏈表的刪除操作芍锦。但是要把握細節(jié)。廢話不多說

便于測試飞盆,我就把密碼寫成了隨機數(shù)

具體的細節(jié)我就寫在注釋里面了

#define _CRT_SECURE_NO_WARNINGS     //預編譯處理
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

typedef struct node     // 定義節(jié)點
{
    int num;    //編號
    int pwd;    //密碼
    struct node *next;
}Node, *LinkList;


void CreatList(LinkList &L, int n)  // 創(chuàng)建鏈表
{
    int data;
    LinkList LNew, pCur;

    pCur = L;

    int i;
    srand((unsigned)time(NULL));


    for (i = 0; i < n; i++) {
        LNew = (LinkList)malloc(sizeof(Node));
        LNew->num = i + 1;
        LNew->pwd = (rand() % 5 + 1);

        pCur->next = LNew;
        pCur = LNew;
    }

    pCur->next = L->next;

    return;
}

void Print(LinkList L)  // 打印鏈表
{
    if (L->next == NULL) {      //判斷空鏈表
        printf("此鏈表為空娄琉!\n");
        return;
    }

    LinkList pCur;
    pCur = L->next;

    while (1) {
        printf("%-4d%-4d\n", pCur->num, pCur->pwd);
        pCur = pCur->next;
        if (pCur == L->next)
            break;
    }
    return;
}

void Game(LinkList &L, int n)
{
    int count_All;  //計數(shù)器,用于標記當前的個數(shù)
    int count_Every;    //單次循環(huán)計數(shù)器

    LinkList pPre;
    LinkList FreeTemp;

    count_All = 0;  
    count_Every = 1;

    int flagPwd;    
    srand((unsigned)time(NULL));    /* 設置初始密碼為隨機值(1~n) */
    flagPwd = rand()%n+1;
    
    pPre = L;
    
    printf("初始密碼為:flagPwd=%d\n", flagPwd);

    while (1) {
        if (flagPwd == count_Every) {

            printf("%d ", pPre->next->num);     //打印 出局者 的序號

            printf("%d\n", pPre->next->pwd);    // 打印 出局者 的 pwd

            flagPwd = pPre->next->pwd;      //重置密碼 pwd 為 出局者密碼

            FreeTemp = pPre->next;      // 記錄出局者 待后續(xù)釋放空間

            pPre->next = pPre->next->next;      //刪除節(jié)點(出局者)

            free(FreeTemp);     //釋放出局者 

            count_All++;    //計數(shù) 刪除節(jié)點的個數(shù)

            count_Every = 0;    // 刪除節(jié)點之后吓歇,計數(shù)為置為 0
        }
        else {

            pPre = pPre->next;  //游標后移
        }

        count_Every++;  //當前計數(shù)加 +1 

        if (count_All == n) {
            L->next = NULL;
            break;
        }

        fflush(stdin);  //清除緩存
    }
}


int main()      //主函數(shù)
{
    LinkList L; // 

    L = (LinkList)malloc(sizeof(Node));
    L->next = NULL;     //頭結點指針域為空孽水,防止為合并之后為空的輸出異常

    int n;  //游戲人數(shù)
    printf("請輸入游戲人數(shù):");
    scanf("%d", &n);

    CreatList(L, n);    //初始化游戲
    printf("游戲初始化結果:\n");
    Print(L);           //打印初始化結果

    printf("游戲結果:\n");  //游戲處理
    Game(L, n);

    //printf("結果:\n");
    //Print(L);

    system("pause");

    return 0;
}


Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市城看,隨后出現(xiàn)的幾起案子女气,更是在濱河造成了極大的恐慌,老刑警劉巖测柠,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炼鞠,死亡現(xiàn)場離奇詭異,居然都是意外死亡轰胁,警方通過查閱死者的電腦和手機谒主,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赃阀,“玉大人霎肯,你說我怎么就攤上這事¢凰梗” “怎么了观游?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肖抱。 經(jīng)常有香客問我备典,道長异旧,這世上最難降的妖魔是什么意述? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮勾笆,結果婚禮上缤削,老公的妹妹穿的比我還像新娘。我一直安慰自己党觅,他們只是感情好术荤,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布倚喂。 她就那樣靜靜地躺著,像睡著了一般瓣戚。 火紅的嫁衣襯著肌膚如雪端圈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天子库,我揣著相機與錄音舱权,去河邊找鬼。 笑死仑嗅,一個胖子當著我的面吹牛宴倍,可吹牛的內容都是我干的。 我是一名探鬼主播仓技,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鸵贬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脖捻?” 一聲冷哼從身側響起阔逼,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎地沮,沒想到半個月后颜价,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡诉濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年周伦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片未荒。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡专挪,死狀恐怖,靈堂內的尸體忽然破棺而出片排,到底是詐尸還是另有隱情寨腔,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布率寡,位于F島的核電站迫卢,受9級特大地震影響,放射性物質發(fā)生泄漏冶共。R本人自食惡果不足惜乾蛤,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一每界、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家卖,春花似錦眨层、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酪捡,卻和暖如春叁征,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逛薇。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工航揉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人金刁。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓帅涂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尤蛮。 傳聞我的和親對象是個殘疾皇子媳友,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容