偽碼事故現場
分析與總結
問題描述
目的:使用c++模板設計迴圈鍊錶的抽象資料型別(adt)。並在此基礎上,使用迴圈鍊錶adt的基本操作,設計並實現單鏈表的簡單演算法設計。
內容:(1)請使用模板設計迴圈鍊錶的抽象資料型別。(由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考網盤中的單鏈表adt原型檔案,自行設計迴圈鍊錶的adt。)
(2)adt的簡單應用:使用該adt設計並實現迴圈鍊錶應用場合的一些簡單演算法設計。
應用2:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼(正整數)。現在給定乙個隨機數m>0,從編號為1的人開始,按順時針方向1開始順序報數,報到m時停止。報m的人出圈,同時留下他的密碼作為新的m值,從他在順時針方向上的下乙個人開始,重新從1開始報數,如此下去,直至所有的人全部出列為止。請在使用迴圈鍊錶adt的基礎上,設計乙個演算法求出圈的順序(以編號表示)。限定人數至少為1.
template
<
class
elemtype
>
void
joseph
(cirlinklist
&a,int m)
;
//約瑟夫環專用結點型別
struct node
;
輸入說明
第一行:人數n
第二行:第乙個人所持的密碼
第三行:第二個人所持的密碼
第n+1行:第n個人所持的密碼
第n+2行:給定的隨機數m
輸出說明
第一行至第n行:建立的迴圈鍊錶的遍歷結果(乙個結點佔據1行)
第n+1行:空行
第n+2行:出圈的順序(編號與編號之間以「->」分隔)
輸入範例
738
12249
155
輸出範例1 3
2 83 1
4 22
5 46 9
7 15
5->2->6->7->4->3->1
問題分析
問題重點
思路分析
偽碼
template
<
class
elemtype
>
void
joseph
(cirlinklist
&a,int m)
//報道的人出圈
cout<
>number<<
"->"
;//留下密碼
m = start-
>code -1;
temp = start;
//先移動乙個結點,先報乙個
start = start-
>next;
//之前被報道的結點被刪除
a.deletenode
(temp);}
cout<
>number;
//全部刪除了,將head置為空,不在呼叫析構函式了
a.sethead
(null);
//刪除最後乙個結點
delete start;
}
事故現場
第一次提交
第二次提交
第三次提交
分析與總結
乙個新的設想
順序棧ADT模板簡單應用演算法設計 回文判斷
問題描述 應用 正讀與反讀都相同的字串行稱為 回文 序列。請使用順序棧,設計並實現乙個演算法,判斷依次讀入的乙個以 為結束符的字串行是否為形如 序列1 序列2 模式的字串行。其中序列1和序列2中都不含有字元 且序列2是序列1的逆序列。例如,a b b a 是屬於該模式的字串行,而 1 3 3 1 則...
單鏈表ADT模板簡單應用演算法設計 按要求提純鍊錶
偽 異常處理現場 分析與總結 問題描述 目的 使用c 模板設計單鏈表的抽象資料型別 adt 並在此基礎上,使用單鏈表adt的基本操作,設計並實現單鏈表的簡單演算法設計。內容 1 請使用模板設計單鏈表的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推...
8 順序棧ADT模板簡單應用演算法設計 迷宮問題
目的 使用c 模板設計順序棧的抽象資料型別 adt 並在此基礎上,使用順序棧adt的基本操作,設計並實現簡單應用的演算法設計。內容 1 請參照順序表的adt模板,設計順序棧的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分...