鍊錶關係好混亂
/*
*檔名稱:猴子選大王.cpp
*作 者:冷基棟
*完成日期:2023年2月12日
*版 本 號:v1.0
**問題描述:一群猴子,編號是1,2,3 ...m,這群猴子(m個)按照1-m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和n,輸出為大王的猴子是幾號。
提示1:(1)鍊錶解法:可以用乙個迴圈的單鏈表來表示這一群猴子。表示結點的結構體中有兩個成員:乙個儲存猴子的編號,乙個為指向下乙個人的指標,編號為m的結點再指向編號為1的結點,以此構成環形的鏈。當數到第n個時,該結點被刪除,繼續數,直到只有乙個結點。
(2)用結構陣列來表示迴圈鏈:結構體中設乙個成員表示對應的猴子是否已經被淘汰。從第乙個人未被淘汰的數起,每數到n時,將結構中的標記改為0,表示這只猴子已被淘汰。當數到陣列中第m個元素後,重新從第乙個數起,這樣迴圈計數直到有m-1被淘汰。
*程式輸入:猴子數m,每數到第n個。
*程式輸出:為大王的猴子是幾號。
*/#include using namespace std;
struct monkey
;int main()
else
p2->next=head; //最後乙隻再指向第一只,成了乙個圓圈
//下面要開始數了
p1=head;
for(i=1; inext; //圍成圈的,可能再開始從第一隻數,如果還未被淘汰的話
//找到了,
p2=p1->next; //p2將被刪除
//cout
p1=p2->next; //下一輪數數的新起點
delete p2; //將不在鍊錶中的結點放棄掉
}king=p1->num;
delete p1;
}cout執行結果:
知識點總結:
鍊錶的查詢 鍊錶的刪除
學習心得:
好好學習 天天向上
學術休假期 專案3 (1 應用列舉
問題及 閱讀教材7.3節,了解列舉型別的一般用法。閱讀下面輸出he先生買車方案的程式,理解使用列舉型別的意義。檔名稱 he先生買車方案.cpp 作 者 冷基棟 完成日期 2015年2月26日 版 本 號 v1.0 include using namespace std enum color enum...
學術休假期 專案1 動態鍊錶體驗5
檔名稱 test.cpp 作 者 冷基棟 完成日期 2015年1月24日 版 本 號 v1.0 問題描述 編寫函式,使建立鍊錶時,結點中的資料呈現公升序。程式輸入 若干正數 以0或乙個負數結束 建立鍊錶。程式輸出 資料呈現公升序輸出 include using namespace std struc...
學術休假期 專案1 動態鍊錶體驗6
檔名稱 test.cpp 作 者 冷基棟 完成日期 2015年1月24日 版 本 號 v1.0 問題描述 編寫函式,使建立鍊錶時,結點中的資料呈現公升序,插入乙個數到有序鍊錶中並按原序排列。程式輸入 若干正數 以0或乙個負數結束 建立鍊錶。程式輸出 資料呈現公升序輸出 include using n...