本篇文章給大家分享的是有關C語言中怎么實現(xiàn)一個約瑟夫環(huán),小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、新民網(wǎng)站維護、網(wǎng)站推廣。C語言約瑟夫環(huán)的實現(xiàn)
一、典故:
據(jù)說著名猶太歷史學家 Josephus有過以下的故事:在羅馬人占領喬塔帕特后,39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧愿死也不要被敵人抓到,于是商量了一個自殺方式:
41個人排成一個圓圈,由第1個人 開始報數(shù),每數(shù)到第3人該人就必須自殺,然后再由下一個重新報數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從,Josephus要 他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,于是逃過了這場死亡游戲。
二、用循環(huán)鏈表實現(xiàn)
1.約瑟夫環(huán)實現(xiàn)
sListNode* JosephCycle(sListNode* pHead, DataType x) { if(pHead == NULL) return NULL; sListNode* cur = pHead; while(1) { DataType m = x; if(cur->next == cur) { return cur; } while(--m) { cur = cur->next; } //delete替換法 cur->data = cur->next->data; sListNode* del = cur->next; cur->next = cur->next->next; free(del); del=NULL; }
2.測試
void TestJosephCycle() { sListNode* list = NULL; Push_Back(list, 1); Push_Back(list, 2); Push_Back(list, 3); Push_Back(list, 4); Push_Back(list, 5); Push_Back(list, 6); Push_Back(list, 7); Push_Back(list, 8); Push_Back(list, 9); PrintList(list); //建環(huán) sListNode* cur = list; while(cur->next != NULL) { cur = cur->next; } cur->next = list; sListNode* ret = JosephCycle(list, 3); cout<<"Joseph:"<data< 以上就是C語言中怎么實現(xiàn)一個約瑟夫環(huán),小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
名稱欄目:C語言中怎么實現(xiàn)一個約瑟夫環(huán)-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://weahome.cn/article/csippe.html