數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書_第1頁
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書_第2頁
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書_第3頁
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書_第4頁
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)指導(dǎo)書上海交通大學(xué)電院數(shù)據(jù)結(jié)構(gòu)大平臺(tái)課程組目錄1. 關(guān)于實(shí)習(xí)步驟的要求和建議2. 上機(jī)實(shí)習(xí)實(shí)習(xí)一 線性結(jié)構(gòu)實(shí)習(xí)二 樹和二叉樹實(shí)習(xí)三 查找實(shí)習(xí)四 圖3. 實(shí)習(xí)報(bào)告樣例1 關(guān)于實(shí)習(xí)步驟的要求和建議從以往的教學(xué)事先實(shí)習(xí)的經(jīng)驗(yàn)來看,在初學(xué)階段執(zhí)行嚴(yán)格的實(shí)習(xí)步驟規(guī)范(包括上機(jī)操作規(guī)范),機(jī)時(shí)利用率會(huì)大大提高,有助于養(yǎng)成良好的程序編制風(fēng)格,培養(yǎng)嚴(yán)謹(jǐn)、科學(xué)、高效的工作方式。在以往的教學(xué)實(shí)踐中,經(jīng)常發(fā)現(xiàn)很多學(xué)生抱怨說,化了兩個(gè)小時(shí)才找出一個(gè)錯(cuò)誤,甚至一無所獲。他們不明白造成這種情況的原因,正是他們自己。有的學(xué)生不屑于按實(shí)習(xí)步驟規(guī)范去做,甚至對(duì)于實(shí)習(xí)步驟的要求和建議看都不看一遍,認(rèn)為那是浪費(fèi)時(shí)

2、間,這是及其害的。實(shí)習(xí)步驟規(guī)范不但可以培養(yǎng)科學(xué)化的工作作風(fēng),而且還能有效地避免錯(cuò)誤。具體的步驟機(jī)規(guī)范如下:1 問題分析與系統(tǒng)的結(jié)構(gòu)設(shè)計(jì): 充分地分析和理解問題本身,弄清要求作什么,限制條件是什么。按照以數(shù)據(jù)結(jié)構(gòu)為中心的原則劃分模塊,即定義數(shù)據(jù)結(jié)構(gòu)及其在這些結(jié)構(gòu)之上的操作,使得對(duì)數(shù)據(jù)結(jié)構(gòu)的存取通過這些操作加以實(shí)現(xiàn)。在這個(gè)過程中,要綜合考慮系統(tǒng)功能。要考慮系統(tǒng)結(jié)構(gòu)清晰、合理、簡(jiǎn)單并且易于調(diào)試。最后寫出每個(gè)子程序(過程或函數(shù))的規(guī)格說明,列出它們之間的調(diào)用關(guān)系,可以使用調(diào)用關(guān)系圖表示則更加清晰,這樣便完成了系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。2 詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)的目的是對(duì)子程序(過程或函數(shù))的進(jìn)一步求精。用 IF

3、、WHILE和賦值語句等,以及自然語言寫出算法的框架。利用自然語言的目的是避免陷入細(xì)節(jié)。在編碼時(shí),可以對(duì)詳細(xì)設(shè)計(jì)的結(jié)果進(jìn)一步求精,用高級(jí)語言表示出來。程序的每一行最好不超過 60 個(gè)字符。每個(gè)子程序(或過程、函數(shù))通常不要太長(zhǎng),以 40 行為宜。子程序(或過程、函數(shù))包含的程序行數(shù)太多,易于造成理解的困難??刂?IF 、WHILE 等語句的連續(xù)嵌套的深度應(yīng)加以控制。程序的目的性必須明確。對(duì)每一段程序完成的作用,除非常明顯的除外(如:x = x + 1; 注釋為 x 加 1,沒有什么意義),都應(yīng)加以注釋。這會(huì)對(duì)程序的調(diào)試提供很多方便。另外,根據(jù)情況可以設(shè)立若干調(diào)試點(diǎn),即輸出若干信息,用于驗(yàn)證和你

4、的設(shè)想是否一致。另外,對(duì)于輸入輸出語句,必須對(duì)它們的作用加以說明。否則,在調(diào)試程序時(shí),無法了解系統(tǒng)需要輸入什么,系統(tǒng)輸出的又是什么。程序的書寫,必須按照一定的規(guī)范,如保留字小寫時(shí)涂黑等等。3 上機(jī)準(zhǔn)備和靜態(tài)檢查上機(jī)準(zhǔn)備:l 高級(jí)語言文本l 熟悉機(jī)器的用戶手冊(cè),熟悉常用的命令。l 準(zhǔn)備調(diào)試的工具,考慮調(diào)試方案。如果機(jī)器上沒有現(xiàn)成的調(diào)試工具可供利用,可以自己先設(shè)計(jì)一些以供使用。l 靜態(tài)檢查自己用一組數(shù)據(jù)手動(dòng)執(zhí)行程序;或同同學(xué)一起閱讀自己的程序,以全面地了解該程序的邏輯。4 上機(jī)調(diào)試程序自底向上,先調(diào)試底層模塊,再調(diào)試上層模塊。最后,整個(gè)程序進(jìn)行聯(lián)調(diào)。調(diào)試正確后將源程序和運(yùn)行結(jié)果加以列印輸出。5 實(shí)

5、習(xí)報(bào)告的整理l 需求及規(guī)格說明問題描述,求解的問題是什么。l 設(shè)計(jì):設(shè)計(jì)思想:存儲(chǔ)結(jié)構(gòu)、主要的算法思想。設(shè)計(jì)表示:子程序(過程或函數(shù))的規(guī)格說明,通過調(diào)用關(guān)系圖表 示它們之間的調(diào)用關(guān)系。實(shí)現(xiàn)注釋:詳細(xì)設(shè)計(jì)表示:主要算法的框架。l 用戶手冊(cè):使用說明。l 調(diào)試報(bào)告:?jiǎn)栴}是如何解決的,討論與分析、改進(jìn)設(shè)想、經(jīng)驗(yàn)與體會(huì)、時(shí)空復(fù)雜度等。l 附錄源程序清單和結(jié)果:源程序必須有注釋,以及必要的測(cè)試數(shù)據(jù)和運(yùn)行結(jié)果數(shù)據(jù)。提倡用英文描述。l 實(shí)驗(yàn)報(bào)告要求:在程序開發(fā)過程中,逐步形成各種必要的文檔及資料??梢詫懺趯?shí)驗(yàn)報(bào)告紙上,或以電子文檔的形式進(jìn)行書寫。2 上機(jī)實(shí)習(xí) l 以下的實(shí)習(xí)題目配合課程的進(jìn)度,請(qǐng)同學(xué)們務(wù)必

6、自己完成。為了鍛煉自己的應(yīng)用各種不同的數(shù)據(jù)結(jié)構(gòu)的能力,盡可能的多作一些題目是非常必要的。在完成各種不同題目的過程中,對(duì)各種算法的時(shí)、空復(fù)雜性的分析,將幫助您在更高的角度解決各種應(yīng)用問題。l 為了減輕同學(xué)的負(fù)擔(dān),我們對(duì)同學(xué)的實(shí)習(xí)報(bào)告進(jìn)行了精簡(jiǎn)。本實(shí)習(xí)報(bào)告中的題目分以下幾種類型:1、 實(shí)習(xí)題:必須按照實(shí)習(xí)報(bào)告的規(guī)范完成。每個(gè)實(shí)習(xí)的第一題都是實(shí)習(xí)題,必須編寫詳細(xì)的實(shí)習(xí)報(bào)告。實(shí)習(xí)報(bào)告的書寫方法,請(qǐng)參閱本指導(dǎo)書的第 3 部分:實(shí)習(xí)報(bào)告的樣例。2、 作業(yè)題:同樣必須完成。只需交代清楚題目的解法,輔以求解程序和注釋,使得別人能夠看懂你的算法和程序即可。不必象實(shí)習(xí)題那樣書寫完整的實(shí)習(xí)報(bào)告。3、 選作題:鼓勵(lì)同

7、學(xué)選作的題目,尤其是學(xué)有余力的同學(xué)。以下為各次實(shí)習(xí)作業(yè):實(shí)習(xí)一 線性結(jié)構(gòu)1、(實(shí)習(xí)題) 請(qǐng)寫出計(jì)算兩個(gè)以 單鏈接表表示的多項(xiàng)式相乘的程序。 2、(作業(yè)題) 已知兩個(gè)單鏈表 A 和 B 分別表示兩個(gè)集合,其元素遞增排列。請(qǐng)編寫程序求集合 A 和 B 的交集 C = AÇB,要求單鏈表C按其元素遞增排列,并利用原表(即表A和表B)的結(jié)點(diǎn)空間存放表C。3、(作業(yè)題) 假設(shè)有 二 個(gè)棧共同使用一塊順序存儲(chǔ)的空間,為簡(jiǎn)單起見可設(shè)為共同使用數(shù)組 int a200。它們的棧底分別設(shè)在數(shù)組的兩端,而棧頂指針在進(jìn)行插 入操作時(shí),向中間方向移動(dòng)。請(qǐng)給出進(jìn)出棧的程序。4、(選作題) 將具有頭結(jié)點(diǎn)的單鏈表的

8、所有指針全部進(jìn)行倒向。要求使用的額外空間只能為 O(1),時(shí)間代價(jià)只能為O(n),其中 n 為結(jié)點(diǎn)個(gè)數(shù)。 注意:如下圖1所示的單鏈表,倒向之后將如圖2所示。head ABCDhead ABCD圖 1、倒向之前的單鏈表 圖 2、倒向之后的單鏈表實(shí)習(xí)二 樹和二叉樹1、(實(shí)習(xí)題) 請(qǐng)編寫一個(gè)程序,確定二叉樹的特征。如:每個(gè)節(jié)點(diǎn)的層次,從根到該節(jié)點(diǎn)的枝長(zhǎng)(路徑長(zhǎng)度),子孫的個(gè)數(shù)及祖先的個(gè)數(shù)。每個(gè)節(jié)點(diǎn)在前序、中序、后序中的訪問的序號(hào)。2、(作業(yè)題) 設(shè)二叉樹的結(jié)點(diǎn)的數(shù)據(jù)場(chǎng)之值僅為一大寫英文字母。其前序和中序的遍歷結(jié)果(打印結(jié)點(diǎn)的數(shù)據(jù)場(chǎng)之值)分別保存在字符串?dāng)?shù)組 preorderN 及 inorderN之

9、中,其中 N 未常數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序以標(biāo)準(zhǔn)形式形式存儲(chǔ)保存該二叉樹。3、(作業(yè)題) 設(shè)樹的根結(jié)點(diǎn)的層號(hào)為1,而其他各層上的結(jié)點(diǎn)的層號(hào)比其父結(jié)點(diǎn)的層號(hào)大 1。另外設(shè)該樹中的結(jié)點(diǎn)的數(shù)據(jù)場(chǎng)之值為正整數(shù)。這樣數(shù)對(duì)( Ik,Wk)就表示了該樹中的結(jié)點(diǎn)的層號(hào)和其數(shù)據(jù)場(chǎng)之值。從鍵盤上依次輸入 m 個(gè)數(shù)對(duì),如:( I1,W1),( I2,W2),( Im,Wm);這些數(shù)對(duì)是按照結(jié)點(diǎn)的前序序列給出的。注意這是用 層號(hào) 前序 表示一棵樹的方法。如:(1,A), (2,B), (2,C), (3,E), (4,G), (3,F(xiàn)), (2,D), (3,X), (3,Y), (3,Z);它所表示的樹如圖 3 所示。請(qǐng)編寫

10、程序,以標(biāo)準(zhǔn)形式存儲(chǔ)這棵樹。為了簡(jiǎn)單起見,可設(shè)這棵樹上的結(jié)點(diǎn)的度數(shù)最大為 3,結(jié)點(diǎn)的存儲(chǔ)形式為:dataparentson1 son2 son3其中:data 域?yàn)榻Y(jié)點(diǎn)的數(shù)據(jù)場(chǎng),parent 域?yàn)榻Y(jié)點(diǎn)的父親結(jié)點(diǎn)的地址,son1,son2,son3分別給出結(jié)點(diǎn)的三個(gè)兒子的地址。ACDBZYXFEG 圖 3 、 一課三次樹4、(選作題) 用標(biāo)準(zhǔn)形式給出了一棵度為三的樹(每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)場(chǎng)、指向兒子節(jié)點(diǎn)的指針場(chǎng),可參閱上題 )。設(shè)該三次樹的數(shù)據(jù)場(chǎng)的值為一個(gè)字符,請(qǐng)編寫一個(gè)程序,以樹的兩維形式表示打印節(jié)點(diǎn)的值。 注意:圖 3 即為樹的二維表示形式。在實(shí)現(xiàn)時(shí),為了方便可用打點(diǎn)的方法代替直線。實(shí)習(xí)三 查找

11、1、(實(shí)習(xí)題) 從鍵盤上輸 入一串正整數(shù), 最后輸入1作為輸入結(jié)束的標(biāo)志。如輸入的序列為:2,5,7,23,48,96,-1。請(qǐng)以這些正整數(shù)的值作為二叉排序樹中的結(jié)點(diǎn)的數(shù)據(jù)場(chǎng)之值,建立一棵二叉排序樹。注意:請(qǐng)采用動(dòng)態(tài)存儲(chǔ)方法保存這棵二叉排序樹,事先并未知道該二叉排序樹中的結(jié)點(diǎn)的個(gè)數(shù)。2、 (作業(yè)題) 已知一棵排序二叉樹,樹中結(jié)點(diǎn)的形式為:data info left right其中,data 給出結(jié)點(diǎn)的數(shù)據(jù)場(chǎng),info 給出本結(jié)點(diǎn)的左子樹中的結(jié)點(diǎn)總數(shù),left和 right 分別給出本結(jié)點(diǎn)的左兒子和右兒子的地址。數(shù)據(jù)場(chǎng)data 和info的類型皆為 int。又已知該二叉排序樹的根結(jié)點(diǎn)的地址為

12、root。請(qǐng)?jiān)O(shè)計(jì)二個(gè)函數(shù),分別實(shí)現(xiàn)下述功能:1 按遞增序找出該二叉排序樹中的第 i 個(gè)小的結(jié)點(diǎn)。2 插入數(shù)據(jù)場(chǎng)之值為 x 的結(jié)點(diǎn),并仍應(yīng)保持該二叉排序樹的性質(zhì)不 變。3、 (作業(yè)題) 已知一棵二叉排序樹,其根結(jié)點(diǎn)的地址為 root。請(qǐng)編寫一個(gè)程序,構(gòu)造出一棵具有相同結(jié)點(diǎn)的完全二叉樹,且它同樣是二叉排序樹。4、(選作題)在平衡的排序二叉樹的中,試編寫刪除具有給定關(guān)鍵字的結(jié)點(diǎn)的函數(shù)。 實(shí)習(xí)四 圖1、(實(shí)習(xí)題) 以數(shù)偶的形式依次從鍵盤上輸入一串?dāng)?shù)據(jù)。如:(A,B)為從起始結(jié)點(diǎn)(其數(shù)據(jù)場(chǎng)之值為一大寫的英文字母 A ),到終止結(jié)點(diǎn)(其數(shù)據(jù)場(chǎng)之值為一大寫的英文字母 B)的無向邊。最后輸入(Z,Z)表示輸入

13、結(jié)束。請(qǐng)用無向圖的鄰接多重表存儲(chǔ)該無向圖,并注意一定要使用動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)。2、(作業(yè)題) 已知一以動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu)形式存儲(chǔ)的,以鄰接多重表表示的無向圖。請(qǐng)用KRUSKAL算法求出它的最小代價(jià)生成樹。3、(作業(yè)題) 已知一以鄰接矩陣形式存儲(chǔ)的 AOV 圖。請(qǐng)求出它的所有的合理的拓?fù)渑判虻男蛄小? 、(選作題) 已 知 一 以 動(dòng) 態(tài) 存 儲(chǔ) 結(jié) 構(gòu) 形 式 存 儲(chǔ) 的, 以 鄰 接 表 表 示 的 有 向 圖。 請(qǐng) 求 出 它 的 強(qiáng) 連 通 分 量。3、實(shí)習(xí)報(bào)告樣例一、實(shí)習(xí)題:約瑟夫(Josephus)問題:設(shè)有n 個(gè)人圍成一個(gè)圓圈,任意給定一個(gè)正整數(shù)m,從第一個(gè)人開始順時(shí)針計(jì)數(shù),計(jì)到第m個(gè)人,將其

14、從圓圈中除去。然后再從下一個(gè)人開始,周而復(fù)始,直到圓圈中只剩一個(gè)人為止,那么剩下的那個(gè)人就是贏家。1需求分析和說明分析約瑟夫問題:n個(gè)人圍成圈,從第一個(gè)人開始,數(shù)到第m個(gè)人,刪除并以下一個(gè)人開始進(jìn)行第二輪操作,直到最后一個(gè)人作為優(yōu)勝者。例如n=6, m=3, 處理過程下圖。2設(shè)計(jì)n個(gè)人圍圈,形成線性關(guān)系;處理為逐個(gè)刪除,故用鏈?zhǔn)浇Y(jié)構(gòu)合適;又人員圍成圓圈,所以此鏈?zhǔn)浇Y(jié)構(gòu)采用循環(huán)方式較好;排號(hào)按照一個(gè)方向進(jìn)行,故數(shù)據(jù)結(jié)構(gòu)采用帶頭結(jié)點(diǎn)的單向循環(huán)鏈表。假設(shè)人員以首次的編號(hào)命名,對(duì)每個(gè)人員采用編號(hào)和姓名加以描述。存儲(chǔ)結(jié)構(gòu):struct person /定義人員信息,包括序號(hào)和姓名intno;char n

15、ame10;/circlinklist.h單向循環(huán)鏈表類template <class ElemType> class CircLinkList CircLinkListNode<ElemType> *head, *tail;/指向表頭結(jié)頭和尾結(jié)點(diǎn)CircLinkListNode<ElemType> *currPtr; /指向當(dāng)前工作結(jié)點(diǎn)CircLinkListNode<ElemType> *prevPtr; /指向當(dāng)前工作結(jié)點(diǎn)的前一結(jié)點(diǎn)int size;/表中元素的個(gè)數(shù)int position;/表中當(dāng)前元素所在的元素序號(hào)(位置)public:

16、 CircLinkList ( );/構(gòu)造函數(shù) CircLinkList ( ); /析構(gòu)函數(shù)void Clear ( ); /鏈表置空int Length ( ) constreturn size;; /求鏈表長(zhǎng)度bool IsEmpty ( ) constreturn (size=0);;/判斷鏈表是否空bool IsEnd ( ) constreturn (currPtr=tail);;/當(dāng)前結(jié)點(diǎn)是否是尾結(jié)點(diǎn)int CurrentPosition() constreturn position; /返回當(dāng)前結(jié)點(diǎn)的序號(hào)ElemType Data ( ) const; /返回當(dāng)前指針?biāo)傅慕Y(jié)點(diǎn)

17、中的元素值void GoNext ( );/將當(dāng)前指針指向當(dāng)前結(jié)點(diǎn)后面的一個(gè)結(jié)點(diǎn)void Reset(int pos);/將當(dāng)前指針指向序號(hào)為pos的結(jié)點(diǎn)CircLinkListNode<ElemType> *Find ( ElemType e ); /查找從當(dāng)前結(jié)點(diǎn)起第一個(gè)元素值為e的結(jié)點(diǎn)/各種位置上的插入操作void InsertFront (const ElemType e );/在首結(jié)點(diǎn)位置上插入元素值為e的新結(jié)點(diǎn)void InsertTail (const ElemType e );/在尾結(jié)點(diǎn)之后插入元素值為e的新結(jié)點(diǎn),使其成為新的尾結(jié)點(diǎn)void InsertAt (co

18、nst ElemType e );/在當(dāng)前結(jié)點(diǎn)位置上插入元素值為e的新結(jié)點(diǎn), /原來的當(dāng)前結(jié)點(diǎn)成為其后一個(gè)結(jié)點(diǎn)void InsertAfter (const ElemType e );/在當(dāng)前結(jié)點(diǎn)之后插入元素值為e的新結(jié)點(diǎn) ElemType RemoveFront( );/刪除首結(jié)點(diǎn),并返回其元素值ElemType RemoveAt( );/刪除當(dāng)前結(jié)點(diǎn),并返回其元素值;算法思想:聲明一個(gè)person類型的單向循環(huán)鏈表。從鍵盤順序輸入n個(gè)人的姓名, 建立約瑟夫環(huán)。計(jì)數(shù)并逐個(gè)讀取并刪除第m個(gè)人,直到鏈表為空,其中最后一個(gè)被讀出的即優(yōu)勝者。調(diào)用關(guān)系:程序任務(wù)簡(jiǎn)單,故設(shè)計(jì)在一個(gè)main()函數(shù)內(nèi),只

19、設(shè)計(jì)類成員函數(shù)的調(diào)用,無另外的子程序或函數(shù)。算法實(shí)現(xiàn)框架:3用戶手冊(cè):運(yùn)行程序,按照屏幕提示分別輸入圈內(nèi)人數(shù)n,正整數(shù)m和n個(gè)人的姓名,之后屏幕將顯示按照輸入次序排好的人員被逐個(gè)刪除的次序,最后顯示最后的出優(yōu)勝者。4調(diào)試報(bào)告:時(shí)間復(fù)雜度分析:該算法在建立時(shí)的時(shí)間復(fù)雜度為O(n), 刪除時(shí)時(shí)間耗費(fèi)在逐個(gè)數(shù)元素上,按照第m個(gè)刪除的原則,不妨將n個(gè)元素分成若干組,每組m個(gè)人,n個(gè)人最多分n/m+1組。擴(kuò)展最后一組,使其也是m個(gè)人,對(duì)組內(nèi)元素從1到m排號(hào),每組排號(hào)為m的只數(shù)到一次便被刪除;第二圈數(shù)每組排號(hào)為1的被刪除,每個(gè)元素?cái)?shù)過2次;第三圈數(shù)每組排號(hào)為2的被刪除,每個(gè)元素?cái)?shù)過3次;最后,第m圈, 每

20、組排號(hào)為m-1的被刪除,每個(gè)元素?cái)?shù)過m次;故總刪除總的時(shí)間為:(n/m+1)(1+2+3+m)=m(m+1)(n/m+1)/2,時(shí)間復(fù)雜度為:O(n*m);縮小最后一組,使其是0個(gè)人,同上可得刪除總的時(shí)間為:(n/m)(1+2+3+m)=m(m+1)(n/m)/2,時(shí)間復(fù)雜度也為:O(n*m);綜合建立和刪除,算法時(shí)間復(fù)雜度為:O(n*m)算法改進(jìn)思路:在對(duì)元素?cái)?shù)數(shù)刪除過程中,總是要去判斷是否是頭結(jié)點(diǎn)并繞過它,可以改進(jìn)一下,去掉頭結(jié)點(diǎn),由此看來,并非鏈?zhǔn)浇Y(jié)構(gòu)帶有頭結(jié)點(diǎn)都有益處。改進(jìn)后性能可以提高,但時(shí)間復(fù)雜度依然為:O(n*m)5附錄源程序清單/josephusRing.cpp#include

21、 <iostream.h>#include "circlinklist.h"struct person /定義人員信息,包括序號(hào)和姓名intno;char name10;void main() CircLinkList<person> josephusRing;/聲稱一個(gè)單向循環(huán)鏈表類對(duì)象person temp;int i;int n, m;/共有n個(gè)人,計(jì)數(shù)到 m 刪除/從鍵盤輸入總?cè)藬?shù)ncout<<"Input the number of people:"cin>>n;cout<<endl;

22、/從鍵盤輸入計(jì)數(shù)標(biāo)準(zhǔn)mcout<<"Input count number:"cin>>m;cout<<endl;/順序輸入n個(gè)人的姓名, 建立約瑟夫環(huán)cout<<"Input every person's name:"<<endl;for (i=1; i<=n; i+) cin>>;/輸入姓名temp.no=i;/將輸入次序作為人員編號(hào)josephusRing.InsertTail(temp);/將新來人員信息加入到鏈表尾部/計(jì)數(shù)并逐個(gè)刪除第m個(gè)人,直到鏈表為空josephusRing.Reset(1); /當(dāng)前結(jié)點(diǎn)設(shè)置為首結(jié)點(diǎn)i=0;cout<<"Deleted order: "<<endl;while (!josephusRing.IsEmpty() /以鏈表為空作為結(jié)束條件josephusRing.GoNext();/將當(dāng)前結(jié)點(diǎn)設(shè)置為當(dāng)前結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論