在日常學(xué)習(xí)、工作或生活中,大家總少不了接觸作文或者范文吧,通過文章可以把我們那些零零散散的思想,聚集在一塊。那么我們該如何寫一篇較為完美的范文呢?以下是小編為大家收集的優(yōu)秀范文,歡迎大家分享閱讀。
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)1篇一
實(shí)驗(yàn)規(guī)則················································2 實(shí)驗(yàn)環(huán)境················································2 實(shí)驗(yàn)報(bào)告要求············································3 實(shí)驗(yàn)一 單鏈表
(一)······································4 實(shí)驗(yàn)二 單鏈表
(二)······································5 實(shí)驗(yàn)三 棧···············································6 實(shí)驗(yàn)四 二叉樹···········································7 實(shí)驗(yàn)五 最短路徑·········································8 實(shí)驗(yàn)六 內(nèi)部排序·········································9
實(shí) 驗(yàn) 規(guī) 則
為了順利完成實(shí)驗(yàn)教學(xué)任務(wù),確保人身、設(shè)備的安全,培養(yǎng)嚴(yán)謹(jǐn)、踏實(shí)、實(shí)事求是的科學(xué)作風(fēng)和愛護(hù)國家財(cái)產(chǎn)的優(yōu)良品質(zhì),特制定以下實(shí)驗(yàn)規(guī)則:
1、實(shí)驗(yàn)前必須充分預(yù)習(xí),完成指定的預(yù)習(xí)任務(wù)。預(yù)習(xí)要求如下:
(1)認(rèn)真閱讀指導(dǎo)書,進(jìn)行必要的設(shè)計(jì)與計(jì)算。(2)熟悉實(shí)驗(yàn)內(nèi)容。
(3)預(yù)先復(fù)習(xí),并按要求編寫程序。(4)未完成預(yù)習(xí)任務(wù)者不得進(jìn)入實(shí)驗(yàn)室。
2、遵守以下紀(jì)律:
(1)在實(shí)驗(yàn)室不得做和實(shí)驗(yàn)無關(guān)的事情。
(2)進(jìn)行任課老師指定內(nèi)容以外的實(shí)驗(yàn),必須經(jīng)指導(dǎo)教師同意。(3)遵守紀(jì)律,不遲到。
(4)保持實(shí)驗(yàn)室內(nèi)安靜、整潔,愛護(hù)公物,不許亂寫亂畫。
實(shí) 驗(yàn) 環(huán) 境
本實(shí)驗(yàn)在386以上的微機(jī)上進(jìn)行,運(yùn)行環(huán)境為vc6.0。
實(shí)驗(yàn)報(bào)告要求
1、實(shí)驗(yàn)題目 2.實(shí)驗(yàn)?zāi)康?3.實(shí)驗(yàn)環(huán)境
4.實(shí)驗(yàn)內(nèi)容與完成情況(可以附上自主設(shè)計(jì)的源程序)5.出現(xiàn)的問題及對問題的解決方案 6.實(shí)驗(yàn)思考:(學(xué)生對本次實(shí)驗(yàn)的收獲的總結(jié))
實(shí)驗(yàn)一 單鏈表
(一)一、實(shí)驗(yàn)?zāi)康?/p>
掌握線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)及其基本操作。
二、預(yù)習(xí)要求
1、看懂書上的算法,深入理解鏈表的物理存儲模式和邏輯模式。
2、根據(jù)要求,編寫程序準(zhǔn)備上機(jī)調(diào)試。
三、實(shí)驗(yàn)內(nèi)容
實(shí)現(xiàn)一個(gè)簡單的學(xué)生信息管理系統(tǒng),該系統(tǒng)的功能有:
1、利用單鏈表建立學(xué)生基本信息表
2、瀏覽每個(gè)學(xué)生的信息
3、根據(jù)學(xué)號查詢某個(gè)學(xué)生的基本信息
4、添加學(xué)生信息到單鏈表中
5、刪除一個(gè)學(xué)生的信息
四、實(shí)現(xiàn)提示
設(shè)計(jì)結(jié)點(diǎn)的結(jié)構(gòu)體類型,包括學(xué)生的學(xué)號、姓名、年齡、性別;要求設(shè)計(jì)一個(gè)簡單的菜單界面,根據(jù)需要選擇所要進(jìn)行的操作;構(gòu)造函數(shù),每一個(gè)函數(shù)實(shí)現(xiàn)上述的一個(gè)功能。
實(shí)驗(yàn)二 單鏈表
(二)一、實(shí)驗(yàn)?zāi)康?/p>
掌握線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)及其基本操作。
二、預(yù)習(xí)要求
1、看懂書上的算法,深入理解鏈表的物理存儲模式和邏輯模式。
2、根據(jù)要求,編寫程序準(zhǔn)備上機(jī)調(diào)試。
三、實(shí)驗(yàn)內(nèi)容
1、實(shí)現(xiàn)單鏈表的就地逆置。
2、建立兩個(gè)非遞減有序單鏈表,然后合并成一個(gè)非遞減鏈表。
3、建立兩個(gè)非遞減有序單鏈表,然后合并成一個(gè)非遞增鏈表。
4、編寫一個(gè)主函數(shù),調(diào)試上述算法。
四、選做題、思考題
1、如何用帶表頭結(jié)點(diǎn)的單鏈表作為多項(xiàng)式的存儲表示,實(shí)現(xiàn)兩個(gè)多項(xiàng)式的相加。
2、約毖夫環(huán)的實(shí)現(xiàn)。
3、如何利用文件實(shí)現(xiàn)學(xué)生信息的存取。
實(shí)驗(yàn)三 棧
一、實(shí)驗(yàn)?zāi)康?/p>
深入了解并掌握棧的特性及其在實(shí)際中的應(yīng)用;熟練掌握棧的算法實(shí)現(xiàn);運(yùn)用棧操作求解實(shí)際問題。
二、預(yù)習(xí)要求
1、看懂書上的算法,深入理解棧的特性和存儲結(jié)構(gòu),以便在實(shí)際問題背景下靈活運(yùn)用。
2、根據(jù)要求,編寫程序準(zhǔn)備上機(jī)調(diào)試。
三、實(shí)驗(yàn)內(nèi)容
利用棧實(shí)現(xiàn)數(shù)據(jù)的分類,要求當(dāng)輸入為偶數(shù)時(shí)進(jìn)棧1,當(dāng)輸入為奇數(shù)時(shí)進(jìn)棧2,最后分別從棧1和棧2輸出偶數(shù)和奇數(shù)序列。
四、實(shí)現(xiàn)提示
1、開辟一個(gè)連續(xù)的存儲空間,實(shí)現(xiàn)兩個(gè)棧順序存儲空間的共享;分別在兩端設(shè)置棧頂指針,并按要求實(shí)現(xiàn)棧操作。
2、采用順序存儲實(shí)現(xiàn)棧的初始化、入棧、出棧操作。
五、選做題、思考題
1、兩??臻g共享時(shí),棧滿的條件是什么?
2、為停車場編制進(jìn)行管理的模擬程序(習(xí)題集p96,2.1)。
3、編寫程序,利用棧實(shí)現(xiàn)表達(dá)式求值。
實(shí)驗(yàn)四 二叉樹
一、實(shí)驗(yàn)?zāi)康?/p>
通過實(shí)踐掌握二叉樹的存儲結(jié)構(gòu)和遍歷思想;掌握二叉樹的常見算法的程序?qū)崿F(xiàn)。
二、預(yù)習(xí)要求
二叉樹的三種遍歷方法。
三、實(shí)驗(yàn)內(nèi)容
1、輸入字符序列,建立二叉鏈表。
2、利用棧,編寫非遞歸算法,編程實(shí)現(xiàn)二叉樹的中序遍歷。
3、求二叉樹的葉子結(jié)點(diǎn)個(gè)數(shù)。
4、在主函數(shù)中設(shè)計(jì)一個(gè)簡單的菜單,分別調(diào)試上述算法。
四、選做題、思考題
1、如何實(shí)現(xiàn)二叉樹的后序遍歷(非遞歸)。
2、如何求二叉樹的高度。
實(shí)驗(yàn)五 最短路徑(旅游景點(diǎn)導(dǎo)游咨詢模擬)
一、實(shí)驗(yàn)?zāi)康?/p>
利用圖的最短路徑原理為用戶提供路徑咨詢,掌握求最短路徑的算法并編程實(shí)現(xiàn)。
二、預(yù)習(xí)要求
學(xué)習(xí)了解圖的存儲結(jié)構(gòu),掌握求最短路徑的兩種算法。
三、實(shí)驗(yàn)內(nèi)容
設(shè)計(jì)一個(gè)旅游景點(diǎn)導(dǎo)游模擬程序,為來訪的客人提供景點(diǎn)最短路徑的信息查詢服務(wù),任意選取n城市,構(gòu)成一個(gè)有向帶權(quán)圖,圖中頂點(diǎn)表示城市,邊上的權(quán)值表示兩點(diǎn)間的距離,根據(jù)用戶指定的始點(diǎn)和終點(diǎn)輸出相應(yīng)的最短路徑。
四、實(shí)現(xiàn)提示
咨詢以用戶和計(jì)算機(jī)的對話方式進(jìn)行,由用戶輸入起始點(diǎn)和終點(diǎn),輸出信息:最短路徑是多少?并指出所經(jīng)過的城市。存儲結(jié)構(gòu)可選用鄰接矩陣。
五、選做題、思考題
1.如何實(shí)現(xiàn)對城市信息進(jìn)行編輯(如:添加或刪除)的功能。
2.用鄰接表作存儲結(jié)構(gòu),求一指定景點(diǎn)出發(fā),到其余各景點(diǎn)的最短路徑。
實(shí)驗(yàn)六 內(nèi)部排序
一、實(shí)驗(yàn)?zāi)康?/p>
直觀感受算法的關(guān)鍵字比較次數(shù)和關(guān)鍵字移動次數(shù)。
二、預(yù)習(xí)要求
1、常見的排序算法(插入排序、交換排序、選擇排序、歸并排序、基數(shù)排序等)的思想、特點(diǎn)及其適用條件。
2、根據(jù)要求,編寫程序準(zhǔn)備上機(jī)調(diào)試。
三、實(shí)驗(yàn)內(nèi)容
1、對直接插入排序和簡單選擇排序算法進(jìn)行關(guān)鍵字比較次數(shù)和關(guān)鍵字移動次數(shù)的比較。
2、利用鏈?zhǔn)酱鎯Y(jié)構(gòu),編寫程序,實(shí)現(xiàn)直接插入排序和冒泡排序。
四、實(shí)現(xiàn)提示
測試數(shù)據(jù)可以為幾組典型的數(shù)據(jù):正序、逆序、亂序。
五、選做題、思考題
1、快速排序算法的非遞歸實(shí)現(xiàn)。
2、結(jié)合實(shí)驗(yàn),理解針對不同待排元素的特點(diǎn)而選擇不同排序方法的重要性。
3、如何對本實(shí)驗(yàn)進(jìn)行時(shí)間、空間的復(fù)雜度分析。
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)1篇二
北 京 郵 電 大 學(xué)
計(jì) 算 機(jī) 科 學(xué) 與 技 術(shù) 學(xué) 院
算 法 與 數(shù) 據(jù) 結(jié) 構(gòu)
實(shí) 驗(yàn) 指 導(dǎo) 書
楊俊、徐塞虹、漆濤 編著
2006年9月 算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書
目錄
實(shí)驗(yàn)要求....................................................................................................................................3 試驗(yàn)
一、約瑟夫環(huán)..............................................................................…………………..……4 試驗(yàn)
二、長整數(shù)四則運(yùn)算運(yùn)算………………………………………………………………4 實(shí)驗(yàn)三、八皇后.....................................……..........................................................................5 實(shí)驗(yàn)
四、騎士遍歷......................................……………………..............................................5 實(shí)驗(yàn)
五、桌面計(jì)算器...............................……………..............................................................6 實(shí)驗(yàn)
六、平衡排序二叉樹....................…...…….....................................................................6 試驗(yàn)
七、多重集合的實(shí)現(xiàn)……......................................………………………………………7 試驗(yàn)
八、圖論………………………………………………………………………….……..8 實(shí)驗(yàn)
八、內(nèi)部排序性能的比較..........………………….............................................................8 教材及主要參考文獻(xiàn)………………………………………………………………………………..9 2 北京郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書
實(shí)驗(yàn)要求
一、本課程在講課期間需要做上機(jī)實(shí)驗(yàn),目的之一是檢查學(xué)生對所學(xué)算法的掌握和理解程度;其次是鍛煉學(xué)生的團(tuán)隊(duì)合作精神。
二、成績:
1、編碼:占整個(gè)實(shí)驗(yàn)成績的50%;
2、測試:占整個(gè)實(shí)驗(yàn)成績的20%;
3、文檔:占整個(gè)實(shí)驗(yàn)成績的30%。
三、按時(shí)提交上機(jī)文檔,實(shí)驗(yàn)文檔包含以下各項(xiàng):
1、問題描述:實(shí)驗(yàn)題目、內(nèi)容和要求;
2、算法思路:實(shí)驗(yàn)小組對問題的解決方法的文字描述;
3、算法描述:用類算法語言等對算法進(jìn)行描述;
4、源程序及驅(qū)動程序:上機(jī)實(shí)驗(yàn)編制的代碼源程序及程序運(yùn)行環(huán)境;
5、測試數(shù)據(jù):對算法的測試用例;
6、結(jié)果分析和結(jié)論:對算法及測試結(jié)果的分析及結(jié)論;
7、心得體會:通過實(shí)驗(yàn)獲得的心得體會;
8、分工及簽名:最后是小組成員的分工及簽名。
北京郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院-1-算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書
實(shí)驗(yàn)
一、約瑟夫環(huán)
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:約瑟夫環(huán)問題是:n個(gè)人p0,p1,…pn 圍坐成一個(gè)圓環(huán)。每個(gè)人pk持有一個(gè)秘密的數(shù)字ck。0 < ck <= m。開始時(shí)隨機(jī)選取一個(gè)數(shù) c = c0。每個(gè)人從p0 開始從1開始報(bào)數(shù)。報(bào)到數(shù)c 的人出對。然后以出隊(duì)的人的秘密數(shù)字作為新的c 值。從出隊(duì)者的下一個(gè)人順時(shí)針從1 開始再報(bào)數(shù)。直到所有的人全部出隊(duì)。
三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對各種線性表的實(shí)現(xiàn)的掌握程度。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):1人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):各種隊(duì)列的實(shí)現(xiàn)。
八、實(shí)驗(yàn)內(nèi)容和要求:至少用3種以上的線性表來完成此試驗(yàn)??梢栽趲ь^節(jié)點(diǎn)的和不帶頭節(jié)點(diǎn)的線性表、循環(huán)的和非循環(huán)線性表、動態(tài)鏈表和靜態(tài)鏈表以及向量(數(shù)組)之間選擇三種。從空表開始,為每個(gè)人生成一個(gè)隨機(jī)數(shù)。然后將此人加入到線性表之中。
九、可研究與探索的問題:給出各種實(shí)現(xiàn)的優(yōu)缺點(diǎn)比較。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。給出各種線性表實(shí)現(xiàn)的優(yōu)缺點(diǎn)分析。
實(shí)驗(yàn)
二、長整數(shù)四則運(yùn)算
一、實(shí)驗(yàn)類別:驗(yàn)證實(shí)驗(yàn)。
二、問題描述:計(jì)算機(jī)cpu本身可以做32位或者64位的整數(shù)四則運(yùn)算。本試驗(yàn)要求對任意大小的整數(shù)實(shí)現(xiàn)其四則運(yùn)算。將一個(gè)整數(shù)n表示為
n = ±(d0 + d1*b + d2*b2 + ….+ bk*bk)
其中 1< b <= 256 為一個(gè)取定的整數(shù)。0 <= dk < b。用線性表存儲{bk}。給出整數(shù)的四則運(yùn)算程序。
三、實(shí)驗(yàn)?zāi)康模簩唧w的問題選擇適當(dāng)?shù)木€性表實(shí)現(xiàn)。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):各種隊(duì)列的實(shí)現(xiàn)。
八、實(shí)驗(yàn)內(nèi)容和要求:至少用2種以上的線性表來完成此試驗(yàn)。比較不同線性表實(shí)現(xiàn)的速度。
九、可研究與探索的問題:1)對具體問題選擇合適的線性表實(shí)現(xiàn)。2)b 的選取問題。可 否選擇更大的基b。b的選擇所應(yīng)考慮的因素。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。能夠得出用向量(數(shù)組)實(shí)現(xiàn)的線性表速度最快。
實(shí)驗(yàn)三、八皇后問題
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:在n*n 的國際象棋棋盤上放置n個(gè)皇后,使每個(gè)皇后不受其他皇后的攻擊。
三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對堆棧和遞歸程序掌握程度。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):1人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):遞歸程序與堆棧
八、實(shí)驗(yàn)內(nèi)容和要求: 分別用遞歸和堆棧完成此試驗(yàn)。統(tǒng)計(jì)程序運(yùn)行時(shí)間與問題規(guī)模n 的關(guān)系。
九、可研究與探索的問題:問題的復(fù)雜度。當(dāng)n 比較大時(shí),討論提高程序運(yùn)行的方法。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。找出程序運(yùn)行速度的瓶頸。
實(shí)驗(yàn)
四、騎士遍歷
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:在國際象棋n*n的棋盤中,一匹馬從棋盤中任意一格出發(fā),要求用n2-1步走完所有的n2個(gè)格子。每個(gè)格子走且只走過一次。應(yīng)如何走? 試給出算法實(shí)現(xiàn)。
三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對堆棧與回溯算法的掌握。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):堆棧與回溯
八、實(shí)驗(yàn)內(nèi)容和要求:用堆棧完成此試驗(yàn)。統(tǒng)計(jì)程序運(yùn)行時(shí)間與問題規(guī)模n 的關(guān)系。
九、可研究與探索的問題:怎樣枚舉所有馬下一步可走的位置。選擇下一步所走位置的策略。注意由于這個(gè)程序非常耗時(shí),在初期程序調(diào)試時(shí)應(yīng)取較小的n。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。找出程序運(yùn)行速度的瓶頸。給出不同選擇策略的程序運(yùn)行 速度的比較結(jié)果。
實(shí)驗(yàn)
五、桌面計(jì)算器(表達(dá)式求值)
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:模仿unix系統(tǒng)下的dc命令。輸入表達(dá)式字符串,按回車鍵后給出表達(dá)式的值。操作數(shù)為實(shí)數(shù)。
1)操作符有 “+”、“-”、“*”、“/”、“^”(乘方)
2)還可以有臨時(shí)變量。用法如 pi = 3.1415926,r = 3, r*pi^2 3)還可以有事先定義的函數(shù)如:“sin()”(正弦)、“cos()”(余弦)、“l(fā)og()”(對數(shù))、“l(fā)n()”(自然對數(shù))等函數(shù)。
三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生用堆棧解決實(shí)際問題。為本課程后續(xù)的內(nèi)容提供伏筆。也為后繼的課程如編譯原理預(yù)習(xí)。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):堆棧,線性表,命令行參數(shù)的處理。
八、實(shí)驗(yàn)內(nèi)容和要求:學(xué)生應(yīng)至少應(yīng)實(shí)現(xiàn)處理五個(gè)運(yùn)算符:“+”、“-”、“*”、“/”、“^”(乘方)??梢杂靡粋€(gè)線性表來存儲臨時(shí)變量。另一個(gè)線性表來存儲預(yù)定義的函數(shù)名。
九、可研究與探索的問題:查找臨時(shí)變量名的不同方法。如哈希表,二叉樹。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。
實(shí)驗(yàn)
六、平衡排序二叉樹
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:隨機(jī)生成一組整數(shù)p0,p1,…pn-1。將這組整數(shù)按生成的次序插入到一個(gè)平衡排序二叉樹中。然后將p0,p1,…pn-1隨機(jī)重新排列為q0,q1,…qn-1。再按照次次序?qū)⑦@些整數(shù)從生成的平衡排序二叉樹刪除。
三、實(shí)驗(yàn)?zāi)康模浩胶馀判蚨鏄涞牟迦牒蛣h除。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):平衡排序二叉樹的插入和刪除中的旋轉(zhuǎn)。
八、實(shí)驗(yàn)內(nèi)容和要求:統(tǒng)計(jì)在平衡排序二叉樹的插入和刪除過程中各種旋轉(zhuǎn)的出現(xiàn)次數(shù)。
九、可研究與探索的問題:研究平衡排序二叉樹與一般的排序二叉樹在插入和刪除方面的性能比較。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。給出在均勻的隨機(jī)分布下,平衡排序二叉樹與一般排序二叉樹的性能比較。
實(shí)驗(yàn)
七、多重集合的實(shí)現(xiàn)
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:實(shí)現(xiàn)數(shù)學(xué)上多重集合。所謂的多重集合類似于集合,但是一件東西可以放置多個(gè)副本。就如一個(gè)菜籃子里面可以放兩個(gè)蘋果。
三、實(shí)驗(yàn)?zāi)康模翰檎医Y(jié)構(gòu)的各種實(shí)現(xiàn)。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):平衡排序二叉樹的插入和刪除、遍歷,查找。哈希查找結(jié)構(gòu)。
八、實(shí)驗(yàn)內(nèi)容和要求: 假設(shè)集合中包含的元素是可以排序的。將多重集合封裝成一個(gè)類。具體的實(shí)現(xiàn)可以是中序線索化的平衡排序二叉樹,或者帶父節(jié)點(diǎn)指針的平衡排序二叉樹。多重集合的界面如下:
template
multi_set(void);//構(gòu)造函數(shù),初始化為空集合~multi_set(void);//析構(gòu)函數(shù)
multi_set& operator=(multi_set const a);//重載運(yùn)算符=
bool contains(t const& v)const;//如果集合包含v 則返回true,否則返回false
multi_set& operator+=(multi_set const&a);//將集合a 并到自身中。
multi_set& operator-=(multi_set const& a);//自身減去集合a
multi_set& operator-=(t const& a);//自身減去一個(gè)元素a
};//~class multi_set
//返回集合a,b的并
template
template
template
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。給出平衡排序二叉樹實(shí)現(xiàn)的多重集合和用哈希實(shí)現(xiàn)的多重集合的性能比較。
實(shí)驗(yàn)
八、圖論
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:實(shí)現(xiàn)圖論中的各種算法。
1)最小代價(jià)生成樹的krscal 算法和prim算法。2)單源點(diǎn)的最短路徑的dijstra 算法。3)深度優(yōu)先遍歷與廣度優(yōu)先遍歷。4)拓?fù)渑判?/p>
5)求所有節(jié)點(diǎn)之間的最短路徑floyd算法
(在這五個(gè)小題中只要選作一個(gè)即可。)
三、實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)根據(jù)不同的運(yùn)算來選取不同的存儲結(jié)構(gòu)。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):圖論中的各種算法及其復(fù)雜度。根據(jù)不同的操作來決定圖的存儲結(jié)構(gòu)。
八、實(shí)驗(yàn)內(nèi)容和要求:至少實(shí)現(xiàn)上面五個(gè)小題目中的一個(gè)。從文件中讀入一個(gè)圖的信息。
九、可研究與探索的問題:高級數(shù)據(jù)結(jié)構(gòu)如堆、并查集在圖論算法中的應(yīng)用。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。給出在均勻的隨機(jī)分布下,平衡排序二叉樹與一般排序二叉樹的性能比較。
實(shí)驗(yàn)
九、內(nèi)部排序性能的比較
一、實(shí)驗(yàn)類別:設(shè)計(jì)型實(shí)驗(yàn)。
二、問題描述:隨機(jī)生成一組整數(shù)p0,p1,…pn-1。對這組數(shù)據(jù)進(jìn)行排序。
三、實(shí)驗(yàn)?zāi)康模罕容^不同排序算法的性能。
四、實(shí)驗(yàn)學(xué)時(shí):2小時(shí)
五、實(shí)驗(yàn)組人數(shù):3人。
六、實(shí)驗(yàn)設(shè)備環(huán)境:計(jì)算機(jī)。
七、實(shí)驗(yàn)原理及要點(diǎn)(知識點(diǎn)):各種內(nèi)部排序算法。
八、實(shí)驗(yàn)內(nèi)容和要求: 1)實(shí)現(xiàn)插入排序,選擇排序,希爾排序,堆排序以及快速排序。2)快速排序的多種版本。3)對單鏈表實(shí)現(xiàn)歸并排序。4)基數(shù)排序。
5)對小型問題(n = 10)、中型問題(n = 1000)以及大型問題(n = 1百萬)分別統(tǒng)計(jì)不同排序算法的鍵值比較次數(shù)、鍵值移動次數(shù)以及程序運(yùn)行時(shí)間。
26)排序算法的時(shí)間復(fù)雜度可以有o(n)和 o(n log n)。對相同復(fù)雜度的算法,給出他們運(yùn)行時(shí)間與時(shí)間復(fù)雜度的比值。
九、可研究與探索的問題:研究快速排序算法的不同改進(jìn)方法。自省排序算法。只需要移動而不需要交換的快速排序方法。
十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過并且正確運(yùn)行。給出試驗(yàn)報(bào)告。給出在均勻的隨機(jī)分布下,對大中小問題的最快的排序算法。
教材及主要參考文獻(xiàn)
[1] 嚴(yán)蔚敏、吳偉民,數(shù)據(jù)結(jié)構(gòu)習(xí)題集,清華大學(xué)出版社,1999年
[2] john d, data structures with c++, china machine press, 2002.[3] mark allen weiss, data structures and problem solving using c++, 2ed, 清華大學(xué)出版社。2004年。[4] robert sedgewick,algorithms in c part 1 – 4: fundamentals, data structures, sorting, rdsearching, 3, 中國電力出版社,2003年。
[5] 嚴(yán)蔚敏、吳偉民,數(shù)據(jù)結(jié)構(gòu)(c語言版),清華大學(xué)出版社,2006年
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)1篇三
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊
課程名稱:
學(xué)生學(xué)號:
所屬院部:
(理工類)
算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級: 13網(wǎng)絡(luò)工程
1305106009 學(xué)生姓名: 陳韜
網(wǎng)絡(luò)與通信工程學(xué)院 指導(dǎo)教師: 沈奇 14 ——20 15 學(xué)年 第 1 學(xué)期
金陵科技學(xué)院教務(wù)處制
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)報(bào)告書寫要求
實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用a4的紙張。
實(shí)驗(yàn)報(bào)告書寫說明
實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵?;?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。
填寫注意事項(xiàng)
(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。
(3)盡量采用專用術(shù)語來說明事物。
(4)外文、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。
實(shí)驗(yàn)報(bào)告批改說明
實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用百分制,具體評分標(biāo)準(zhǔn)由各院部自行制定。
實(shí)驗(yàn)報(bào)告裝訂要求
實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實(shí)驗(yàn)大綱。
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 順序表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)1 順序表
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
掌握順序表的定位、插入、刪除等操作。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)編寫程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值。編寫主函數(shù)測試結(jié)果。
(2)編寫順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(序號從0開始編號);如果不存在,返回-1。編寫主函數(shù)測試結(jié)果。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,保持順序表的有序性。
解題思路:首先查找插入的位置,再移位,最后進(jìn)行插入操作;從第一個(gè)元素開始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置;然后將從表尾開始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置。
(4)刪除順序表中所有等于x的數(shù)據(jù)元素。
2、選做題
(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,要求寫一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。
程序清單:
#include
} sequenlist;sequenlist l={{1,3,5,5,7,8,10,12,17},8};void print_list(){ int i;for(i=0;i<=;i++)printf(“%4d”,[i]);} void find_all_x(int x){ int found=0,i;for(i=0;i<=;i++)if([i]==x){ printf(“%3d”,i+1);found=1;} if(found==0)printf(“-1n”);} void insert_x(int x){ int loc,i;for(i=0;i<=;i++)if(x<[i])break;< p="">
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
loc=i;for(i=;i>=loc;i--)[i+1]=[i];[loc]=x;++;} void delete_x(int x){ int i,j,found=0;for(i=0;i<=;i++)if(x==[i]){ found=1;for(j=i+1;j<=;j++)[j-1]=[j];i--;--;} if(found==0)printf(“x is not foundn”);else { printf(“x is deletedn”);printf(“the list after deletion is:n”);print_list();
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
} }
void main(){ int x,choice;while(1){ printf(“**********menu**********n”);printf(“ 1--printn”);printf(“ 2--searchn”);printf(“ 3--insertn”);printf(“ 4--deleten”);printf(“ 5--exitn”);printf(“please input your choice:”);scanf(“%d”,&choice);
switch(choice){case 1: printf(“the original list is:n”);print_list();break;case 2: printf(“pls input x you want to search:n”);
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
scanf(“%d”,&x);find_all_x(x);break;case 3: printf(“pls input x you want to insert:n”);scanf(“%d”,&x);insert_x(x);printf(“the list after insertion is:n”);print_list();break;case 4: printf(“pls input x you want to delete:n”);scanf(“%d”,&x);delete_x(x);printf(“the list after deletion is:n”);print_list();break;case 5: exit(0);} } }
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 單鏈表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)2 單鏈表
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
1、實(shí)驗(yàn)?zāi)康?/p>
掌握單鏈表的定位、插入、刪除等操作。
2、實(shí)驗(yàn)要求
(1)注意鏈表的空間是動態(tài)分配的,某結(jié)點(diǎn)不用之后要及時(shí)進(jìn)行物理刪除,以便釋放其內(nèi)存空間。
(2)鏈表不能實(shí)現(xiàn)直接定位,一定注意指針的保存,防止丟失。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)編寫程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素。(2)在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,保持單鏈表的有序性。
解題思路:首先查找插入的位置然后進(jìn)行插入操作;從第一個(gè)結(jié)點(diǎn)開始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置;然后在找到的此結(jié)點(diǎn)之前插入新結(jié)點(diǎn);注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作。
(3)編寫實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),并編寫主函數(shù)測試結(jié)果。
2、選做題
已知指針la和lb分別指向兩個(gè)無頭結(jié)點(diǎn)單鏈表的首元結(jié)點(diǎn)。要求編一算法實(shí)現(xiàn),從表la中刪除自第i個(gè)元素起共len個(gè)元素后,將它們插入到表lb中第j個(gè)元素之前。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 堆棧和隊(duì)列 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)3 堆棧和隊(duì)列
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)掌握應(yīng)用棧解決問題的方法。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法。
(3)掌握隊(duì)列的存儲結(jié)構(gòu)及基本操作實(shí)現(xiàn),并能在相應(yīng)的應(yīng)用問題中正確選用它們。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)判斷一個(gè)算術(shù)表達(dá)式中開括號和閉括號是否配對。(2)測試“漢諾塔”問題。
(3)假設(shè)稱正讀和反讀都相同的字符序列為”回文”,試寫一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”。
2、選做題
在順序存儲結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),元素值表示作業(yè)的預(yù)計(jì)時(shí)間。入隊(duì)列采取簡化的短作業(yè)優(yōu)先原則,若一個(gè)新提交的作業(yè)的預(yù)計(jì)執(zhí)行時(shí)間小于隊(duì)頭和隊(duì)尾作業(yè)的平均時(shí)間,則插入在隊(duì)頭,否則插入在隊(duì)尾。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 串 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)4 串
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
掌握串的存儲及應(yīng)用。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)編寫輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),并用主函數(shù)測試結(jié)果。
(2)編寫輸出字符串s中值等于字符ch的所有字符的函數(shù),并用主函數(shù)測試結(jié)果。
解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯Y(jié)構(gòu),編程刪除串s從位置i開始長度為k的子串。
2、選做題
假設(shè)以鏈結(jié)構(gòu)表示串,編寫算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,若串t中不存在這個(gè)字符,則將串s聯(lián)接在串t的末尾。
提示:為提高程序的通用性,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤輸入。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)5 二叉樹
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)掌握二叉樹的生成,以及前、中、后序遍歷算法。(2)掌握應(yīng)用二叉樹遞歸遍歷思想解決問題的方法。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)建立一棵二叉樹。對此樹進(jìn)行前序遍歷、中序遍歷及后序遍歷,輸出遍歷序列。
(2)在第一題基礎(chǔ)上,求二叉樹中葉結(jié)點(diǎn)的個(gè)數(shù)。(3)在第一題基礎(chǔ)上,求二叉樹中結(jié)點(diǎn)總數(shù)。(4)在第一題基礎(chǔ)上,求二叉樹的深度。
2、選做題
已知一棵完全二叉樹存于順序表sa中,[1…]存儲結(jié)點(diǎn)的值。試編寫算法由此順序存儲結(jié)構(gòu)建立該二叉樹的二叉鏈表。
解題思路:根據(jù)完全二叉樹順序存儲的性質(zhì)來確定二叉樹的父子關(guān)系即“還原”了二叉樹,之后再按照二叉樹二叉鏈表的構(gòu)造方法進(jìn)行建立。完全二叉樹順序存儲的一個(gè)重要性質(zhì)為,第i個(gè)結(jié)點(diǎn)的左孩子是編號為2i的結(jié)點(diǎn),第i個(gè)結(jié)點(diǎn)的右孩子是編號為2i+1的結(jié)點(diǎn)。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 圖 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)6 圖
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)熟練掌握圖的基本概念、構(gòu)造及其存儲結(jié)構(gòu)。
(2)熟練掌握對圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)構(gòu)造一個(gè)無向圖(用鄰接矩陣表示存儲結(jié)構(gòu))。
(2)對上面所構(gòu)造的無向圖,進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,輸出遍歷序列。
2、選做題
采用鄰接表存儲結(jié)構(gòu),編寫一個(gè)判別無向圖中任意給定的兩個(gè)頂點(diǎn)之間是否存在一條長度為k的簡單路徑的算法。簡單路徑是指其頂點(diǎn)序列中不含有重復(fù)頂點(diǎn)的路徑。提示:兩個(gè)頂點(diǎn)及k值均作為參數(shù)給出。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 排序 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)7 排序
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)熟練掌握希爾排序、堆排序、直接插入排序、起泡排序、快速排序、直接選擇排序、歸并排序和基數(shù)排序的基本概念。
(2)掌握以上各種排序的算法。區(qū)分以上不同排序的優(yōu)、缺點(diǎn)。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
用隨機(jī)數(shù)產(chǎn)生100000個(gè)待排序數(shù)據(jù)元素的關(guān)鍵字值。測試下列各排序函數(shù)的機(jī)器實(shí)際執(zhí)行時(shí)間(至少測試兩個(gè)):直接插入排序、希爾排序(增量為4,2,1)、冒泡排序、快速排序、直接選擇排序、堆排序。
2、選做題
假設(shè)含n個(gè)記錄的序列中,其所有關(guān)鍵字為值介于v和w之間的整數(shù),且其中很多關(guān)鍵字的值是相同的。則可按如下方法排序:另設(shè)數(shù)組number[v…w],令number[i]統(tǒng)計(jì)關(guān)鍵字為整數(shù)i的紀(jì)錄個(gè)數(shù),然后按number重排序列以達(dá)到有序。試編寫算法實(shí)現(xiàn)上述排序方法,并討論此種方法的優(yōu)缺點(diǎn)。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 查找 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)8 查找
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
(1)掌握順序表查找、有序表查找、索引順序表查找的各種算法。(2)掌握哈希表設(shè)計(jì)。
二、實(shí)驗(yàn)儀器和設(shè)備
turbo c 2.0/ visual c++
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)在一個(gè)遞增有序的線性表中利用二分查找法查找數(shù)據(jù)元素x。
2、選做題
(2)構(gòu)造一個(gè)哈希表,哈希函數(shù)采用除留余數(shù)法,哈希沖突解決方法采用鏈地址法。設(shè)計(jì)一個(gè)測試程序進(jìn)行測試。
提示:構(gòu)造哈希表只是完成查找的第一步,大家應(yīng)該掌握在哈希表上進(jìn)行查找的過程,可以試著編程序?qū)崿F(xiàn)。程序清單:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)1篇四
石 家 莊 鐵 道 大 學(xué)
實(shí) 驗(yàn) 任 務(wù) 書
課程名稱: 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)學(xué)時(shí): 8 適用專業(yè): 自動化類專業(yè) 開設(shè)學(xué)院: 電氣與電子工程學(xué)院
石 家 莊 鐵 道 大 學(xué)
14學(xué)年—15學(xué)年第 2學(xué)期 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)任務(wù)書
專業(yè)名稱: 實(shí)驗(yàn)學(xué)時(shí): 2 課程名稱:數(shù)據(jù)結(jié)構(gòu) 任課教師: 王明明 實(shí)驗(yàn)題目:線性表的基本操作
實(shí)驗(yàn)環(huán)境: visual c++ 實(shí)驗(yàn)?zāi)康模?/p>
1、掌握線性表的定義;
2、掌握線性表的基本操作,如建立、查找、插入和刪除等。
實(shí)驗(yàn)內(nèi)容:
定義一個(gè)包含學(xué)生信息(學(xué)號,姓名,成績)的的順序表或鏈表,使其具有如下功能:(1)根據(jù)指定學(xué)生個(gè)數(shù),逐個(gè)輸入學(xué)生信息;(2)逐個(gè)顯示學(xué)生表中所有學(xué)生的相關(guān)信息;
(3)根據(jù)姓名進(jìn)行查找,返回此學(xué)生的學(xué)號和成績;
(4)根據(jù)指定的位置可返回相應(yīng)的學(xué)生信息(學(xué)號,姓名,成績);(5)給定一個(gè)學(xué)生信息,插入到表中指定的位置;(6)刪除指定位置的學(xué)生記錄;(7)統(tǒng)計(jì)表中學(xué)生個(gè)數(shù)。
實(shí)驗(yàn)提示:
學(xué)生信息的定義: typedef struct { char no[8];//8位學(xué)號 char name[20];//姓名 int price;//成績 }student;
順序表的定義
typedef struct { student *elem;//指向數(shù)據(jù)元素的基地址
int length;//線性表的當(dāng)前長度 }sqlist;
鏈表的定義:
typedef struct lnode{ student data;//數(shù)據(jù)域 struct lnode *next;//指針域 }lnode,*linklist;
實(shí)驗(yàn)要求:
(1)程序要添加適當(dāng)?shù)淖⑨?,程序的書寫要采用縮進(jìn)格式。
(2)程序要具在一定的健壯性,即當(dāng)輸入數(shù)據(jù)非法時(shí),程序也能適當(dāng)?shù)刈龀龇磻?yīng),如插入刪除時(shí)指定的位置不對等等。
(3)程序要做到界面友好,在程序運(yùn)行時(shí)用戶可以根據(jù)相應(yīng)的提示信息進(jìn)行操作。(4)根據(jù)實(shí)驗(yàn)報(bào)告模板詳細(xì)書寫實(shí)驗(yàn)報(bào)告,在實(shí)驗(yàn)報(bào)告中給出鏈表根據(jù)姓名進(jìn)行查找的算法和插入算法的流程圖。
石 家 莊 鐵 道 大 學(xué)
14學(xué)年—15學(xué)年第 2 學(xué)期 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)任務(wù)書
專業(yè)名稱: 實(shí)驗(yàn)學(xué)時(shí): 2 課程名稱:數(shù)據(jù)結(jié)構(gòu) 任課教師: 李冬梅
實(shí)驗(yàn)題目:棧的應(yīng)用-算術(shù)表達(dá)式求值
實(shí)驗(yàn)環(huán)境: visual c++ 6.0 實(shí)驗(yàn)?zāi)康模?/p>
1.掌握棧的定義及實(shí)現(xiàn);
2.掌握利用棧求解算術(shù)表達(dá)式的方法。
實(shí)驗(yàn)內(nèi)容:
通過修改完善教材中的算法3.4,利用棧來實(shí)現(xiàn)算術(shù)表達(dá)式求值的算法。對算法3.4中調(diào)用的幾個(gè)函數(shù)要給出其實(shí)現(xiàn)過程:
(1)函數(shù)in(c):判斷c是否為運(yùn)算符;
(2)函數(shù)precede(t1,t2):判斷運(yùn)算符t1和t2的優(yōu)先級;(3)函數(shù)operate(a,theta,b):對a和b進(jìn)行二元運(yùn)算theta。
程序運(yùn)行時(shí),輸入合法的算術(shù)表達(dá)式(中間值及最終結(jié)果要在0~9之間,可以包括加減乘除和括號),便可輸出相應(yīng)的計(jì)算結(jié)果。如下圖:
實(shí)驗(yàn)提示:(僅供參考,每個(gè)函數(shù)的具體實(shí)現(xiàn)可以有多種方法,希望有創(chuàng)新)
1.將棧的定義和實(shí)現(xiàn)單獨(dú)保存在頭文件“stack.h”中,中包含此頭文件(即#include“stack.h”)。的具體實(shí)現(xiàn)(1)主函數(shù)如下: void main(){ cout<<“請輸入算術(shù)表達(dá)式,并以#結(jié)束.”< (2)函數(shù)evaluateexpression的實(shí)現(xiàn)見算法3.10(3)函數(shù)in(c)的實(shí)現(xiàn)可以采用以下方式: status in(selemtype c)// 應(yīng)在前面有定義typedef char selemtype;{ // 判斷c是否為運(yùn)算符 switch(c){ case'+':return true;??//補(bǔ)充完整 default:return false;} }(4)函數(shù)precede(t1,t2)的實(shí)現(xiàn)可以采用以下形式: selemtype precede(selemtype t1,selemtype t2){ //根據(jù)教材表3.1,判斷兩個(gè)運(yùn)算符的優(yōu)先關(guān)系 selemtype f;switch(t2){ case '+': case '-':if(t1=='('||t1=='#')f='<';else f='>';break;??//補(bǔ)充完整 } return f;}(5)函數(shù)operate(a,theta,b)的實(shí)現(xiàn)可以采用以下方式: selemtype operate(selemtype a,selemtype theta,selemtype b){ selemtype c;a=a-48;b=b-48;switch(theta){ case'+':c=a+b+48;break;??//補(bǔ)充完整 } return c;} 選做內(nèi)容1:進(jìn)一步改進(jìn),使表達(dá)式的中間值及最終結(jié)果不局限于0~9之間的個(gè)位數(shù)。(如 果完成要在實(shí)驗(yàn)報(bào)告中注明),如下圖: 選做內(nèi)容2: 將表達(dá)式轉(zhuǎn)化成后綴表達(dá)式輸出,利用后綴表達(dá)式求表達(dá)式的值并輸出。 將中綴表達(dá)式轉(zhuǎn)化成后綴表達(dá)式存儲在隊(duì)列中,然后利用后綴表達(dá)式求表達(dá)式的值并輸出。 ? 將中綴表達(dá)式轉(zhuǎn)化成后綴的思想: (1)創(chuàng)建一空隊(duì)列,用來存放后綴表達(dá)式,建立并初始化操作符棧optr,將表達(dá)式起始符“#”壓入optr棧。 (2)依次讀入表達(dá)式中每個(gè)字符ch,循環(huán)執(zhí)行(3)至(5),直至求出整個(gè)表達(dá)式轉(zhuǎn)換完畢。 (3)取出optr的棧頂元素,當(dāng)optr的棧頂元素和當(dāng)前讀入的字符ch均為“#”時(shí),整個(gè)中綴表達(dá)式轉(zhuǎn)換完畢。 (4)若ch不是運(yùn)算符,則進(jìn)隊(duì),讀入下一字符ch。 (5)若ch是運(yùn)算符,則根據(jù)optr的棧頂元素和ch的優(yōu)先權(quán)比較結(jié)果,做不同的處理。 ① 若是小于,則ch壓入optr棧,讀入下一字符ch。② 若是大于,則彈出optr棧頂?shù)倪\(yùn)算符,進(jìn)隊(duì)。③ 若是等于,則optr的棧頂元素是“(”且ch是“)”,這時(shí)彈出optr棧頂?shù)摹?”,相當(dāng)于去掉括號,然后讀入下一字符ch。? 對后綴表達(dá)式進(jìn)行計(jì)算的具體步驟為: 建立一個(gè)棧s從左到右讀后綴表達(dá)式,讀到數(shù)字就將它轉(zhuǎn)換為數(shù)值壓入棧s中,讀到運(yùn)算符則從棧中依次彈出兩個(gè)數(shù)分別到y(tǒng)和x,然后以“x運(yùn)算符y”的形式計(jì)算出結(jié)果,再壓進(jìn)棧s中。如果后綴表達(dá)式未讀完,重復(fù)執(zhí)行上面過程,最后輸出棧頂?shù)臄?shù)值即可結(jié)束。 實(shí)驗(yàn)要求: (1)程序要添加適當(dāng)?shù)淖⑨?,程序的書寫要采用縮進(jìn)格式。 (2)程序要具在一定的健壯性,即當(dāng)輸入數(shù)據(jù)非法時(shí),程序也能適當(dāng)?shù)刈龀龇磻?yīng)。(3)程序要做到界面友好,在程序運(yùn)行時(shí)用戶可以根據(jù)相應(yīng)的提示信息進(jìn)行操作。(4)根據(jù)實(shí)驗(yàn)報(bào)告模板詳細(xì)書寫實(shí)驗(yàn)報(bào)告,在實(shí)驗(yàn)報(bào)告中給出表達(dá)式求值算法的流程圖。
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)1篇五
數(shù) 據(jù) 結(jié) 構(gòu) 實(shí) 驗(yàn) 指 導(dǎo) 書
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書
目錄
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書.......................................................................................................................1
目錄...........................................................................................................................................1 實(shí)驗(yàn)指導(dǎo)書概述...............................................................................................................................2 上機(jī)實(shí)驗(yàn)題目...................................................................................................................................3
實(shí)驗(yàn)一 c語言相關(guān)知識復(fù)習(xí)................................................................................................3
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................3
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................3 實(shí)驗(yàn)二 單鏈表的插入、刪除...............................................................................................3
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................3
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................3
三、實(shí)現(xiàn)提示...................................................................................................................4 實(shí)驗(yàn)三 棧及其應(yīng)用.................................................................................................................5
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................5
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................5 實(shí)驗(yàn)四 二叉樹的遞歸算法.....................................................................................................6
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................6
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................6 實(shí)驗(yàn)五 圖的遍歷.....................................................................................................................7
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................7
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................7 實(shí)驗(yàn)六 有序表的查找.............................................................................................................7
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................7
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................7 實(shí)驗(yàn)七 哈希表.........................................................................................................................7
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................7
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................7 實(shí)驗(yàn)八 內(nèi)部排序算法的應(yīng)用.................................................................................................8
一、實(shí)驗(yàn)?zāi)康?..................................................................................................................8
二、實(shí)驗(yàn)內(nèi)容...................................................................................................................8
實(shí)驗(yàn)指導(dǎo)書概述
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專業(yè)一門重要的專業(yè)技術(shù)基礎(chǔ)課程,是一門關(guān)鍵性核心課程。本課程系統(tǒng)地介紹了軟件設(shè)計(jì)中常用的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的存儲結(jié)構(gòu)和實(shí)現(xiàn)算法,介紹了多種常用的查找和排序技術(shù),并對其進(jìn)行了性能分析和比較,內(nèi)容非常豐富。本課程的學(xué)習(xí)將為后續(xù)課程的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ)。
由于以下原因,使得掌握這門課程具有較大難度: ? 內(nèi)容多,時(shí)間短,給學(xué)習(xí)帶來困難;
? 貫穿全書的動態(tài)鏈表存儲結(jié)構(gòu)和遞歸技術(shù)是學(xué)習(xí)中的重點(diǎn)和難點(diǎn); ? 隱含在各部分的技術(shù)和方法豐富,也是學(xué)習(xí)的重點(diǎn)和難點(diǎn); ? 先修課程中所介紹的專業(yè)性知識不多,加大了學(xué)習(xí)難度。
由于數(shù)據(jù)結(jié)構(gòu)課程的技術(shù)性與實(shí)踐性,《數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)》的設(shè)置十分必要。為了幫助學(xué)生更好地學(xué)習(xí)本課程,理解和掌握算法設(shè)計(jì)所需的技術(shù),為整個(gè)專業(yè)學(xué)習(xí)打好基礎(chǔ),要求運(yùn)用所學(xué)知識,上機(jī)解決一些典型問題,通過分析、設(shè)計(jì)、編碼、調(diào)試等各環(huán)節(jié)的訓(xùn)練,使學(xué)生深刻理解、牢固掌握所用到的一些技術(shù)。
上機(jī)實(shí)踐是對學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。通過上機(jī)實(shí)踐,使學(xué)生在可能短的時(shí)間內(nèi)對數(shù)據(jù)結(jié)構(gòu)知識的實(shí)踐和應(yīng)用有一個(gè)比較全面和系統(tǒng)的認(rèn)識,達(dá)到理論與實(shí)踐相結(jié)合的目的。
為了達(dá)到上述目的,本指導(dǎo)書安排了8個(gè)實(shí)驗(yàn)題目,它們與教科書的各章有緊密的關(guān)系,使學(xué)生在實(shí)驗(yàn)后能加深對課程內(nèi)容的理解,增強(qiáng)動手能力。
每個(gè)實(shí)驗(yàn)題目采取了統(tǒng)一的格式,由問題描述、基本要求、測試數(shù)據(jù)、實(shí)現(xiàn)提示等部分組成。
問題描述旨在為讀者建立問題提出的背景環(huán)境,指明問題“是什么”;
要求則對問題進(jìn)一步求精,劃出問題的邊界,指出具體的參量或前提條件,并規(guī)定該題的最低限度要求;
測試部分旨在為檢查學(xué)生上機(jī)作業(yè)提供方便,在完成實(shí)習(xí)題時(shí)應(yīng)自己設(shè)計(jì)完整和 嚴(yán)格的測試方案,當(dāng)數(shù)據(jù)輸入量較大時(shí),提倡以文件形式向程序提供輸入數(shù)據(jù);
實(shí)現(xiàn)提示對實(shí)現(xiàn)中的難點(diǎn)及其解法思路等問題作了簡要提示,個(gè)別問題給出了參考實(shí)現(xiàn)。
下面帶*的題目為選做題目。
上機(jī)實(shí)驗(yàn)題目
實(shí)驗(yàn)一 c語言相關(guān)知識復(fù)習(xí)
一、實(shí)驗(yàn)?zāi)康?/p>
復(fù)習(xí)c語言中函數(shù)、數(shù)組、結(jié)構(gòu)體、文件等概念,掌握它們的描述與操作方法;熟悉掌握c++中typedef、引用參數(shù)調(diào)用(&)的概念及使用方法,為理解數(shù)據(jù)結(jié)構(gòu)課程的后續(xù)內(nèi)容以及算法書寫奠定基礎(chǔ)。
二、實(shí)驗(yàn)內(nèi)容 問題描述:編寫一個(gè)函數(shù),求一個(gè)整數(shù)數(shù)組中的最大、最小值。
要求:在函數(shù)聲明中采用引用參數(shù)傳遞方式實(shí)現(xiàn)最大、最小值的返回。測試:在主函數(shù)中輸入10個(gè)數(shù),調(diào)用此函數(shù),打印輸出最大和最小值。2 關(guān)于指針的使用:
用malloc方式分別申請兩個(gè)指針,并實(shí)現(xiàn)兩個(gè)指針內(nèi)容的比較大小操作。要求:此功能在一個(gè)函數(shù)內(nèi)實(shí)現(xiàn),該函數(shù)接受兩個(gè)整數(shù)值,存儲到兩個(gè)指針內(nèi)容中,輸出兩者中的最大值。
測試:從主函數(shù)中輸入兩個(gè)數(shù),調(diào)用該函數(shù),打印輸出交換后的值。
實(shí)驗(yàn)二 單鏈表的插入、刪除
一、實(shí)驗(yàn)?zāi)康?/p>
1、熟悉某種數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)上實(shí)現(xiàn)的方法。
2、掌握單鏈表的定義、創(chuàng)建、插入、刪除、遍歷等基本操作的實(shí)現(xiàn)。
3、體會單鏈表操作、有序表插入、刪除的一般方法。
二、實(shí)驗(yàn)內(nèi)容
問題描述:已知遞增有序的單鏈表a,編寫算法實(shí)現(xiàn)向a中插入或刪除一個(gè)元素,并保持a的有序性。
實(shí)驗(yàn)要求:
1、結(jié)點(diǎn)的數(shù)據(jù)均為整型。
2、若表中已經(jīng)存在此元素,則不插入
三、實(shí)現(xiàn)提示
1.在已知的線性表中插入或刪除,需要下面的輔助函數(shù):線性表的創(chuàng)建、線性表的遍歷
2.在單鏈表表中插入或刪除,需依次實(shí)現(xiàn):
a)單鏈表結(jié)構(gòu)的定義
b)單鏈表的創(chuàng)建(頭插法或尾插法建表)c)單鏈表的遍歷
d)單鏈表的插入、刪除(采用順序查找方法,順頭指針往后,查找插入或刪除位置,再修改指針)
//頭文件
#include “stdlib.h” //預(yù)定義常量 #define null 0
//單鏈表的定義
typedef struct lnode{ int data;struct lnode *next;}lnode,*linklist;//單鏈表的創(chuàng)建
void create_list(linklist &l){ int data;linklist p,q;l=(linklist)malloc(sizeof(lnode));l->next=null;
q=l;
scanf(“%d”,&data);while(data!=0){
p=(linklist)malloc(sizeof(lnode));
p->data=data;
p->next=q->next;
q->next=p;
q=p;
scanf(“%d”,&data);} }
//單鏈表的遍歷
void tranverselist(linklist l){
linklist p;
p=l->next;
if(p==null)
{
printf(“niln”);
return;
}
while(p!=null)
{
printf(“%d ”,p->data);
p=p->next;
}
printf(“n”);}
實(shí)驗(yàn)三 棧及其應(yīng)用
一、實(shí)驗(yàn)?zāi)康?/p>
1、熟悉棧的順序表示與實(shí)現(xiàn)。
2、熟悉棧的應(yīng)用。
3、理解并掌握遞歸函數(shù)的設(shè)計(jì)與實(shí)現(xiàn)。
二、實(shí)驗(yàn)內(nèi)容 問題描述:利用棧實(shí)現(xiàn)十進(jìn)制數(shù)n轉(zhuǎn)化為d進(jìn)制數(shù) 要求:
1)輸入一個(gè)n和d,打印輸出d進(jìn)制數(shù)序列。
2)利用順序棧來實(shí)現(xiàn)十進(jìn)制數(shù)n轉(zhuǎn)化為其他d進(jìn)制數(shù)。此時(shí),需要同時(shí)實(shí)現(xiàn)初始化空棧、入棧、出棧、判棧空等輔助功能。測試數(shù)據(jù):
(1)輸入n:1348
d:8 輸出:2504(2)輸入n:9
d:8 輸出:11(3)輸入n:0
d:8 輸出:0 2 問題描述:利用棧實(shí)現(xiàn)算術(shù)表達(dá)式求值。要求:
1)參與運(yùn)算的操作數(shù)為10以內(nèi)的數(shù)值。測試數(shù)據(jù):
自擬。
實(shí)驗(yàn)四 二叉樹的遞歸算法
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握二叉樹的表示與實(shí)現(xiàn)。
2、掌握二叉樹的定義、創(chuàng)建、遍歷等基本操作的實(shí)現(xiàn)。
3、熟悉求二叉樹深度等遞歸算法的設(shè)計(jì)與實(shí)現(xiàn)。
二、實(shí)驗(yàn)內(nèi)容
問題描述:已知二叉樹t,分別采用順序存儲結(jié)構(gòu)、二叉鏈表存儲結(jié)構(gòu)實(shí)現(xiàn)求二叉樹的深度,并對二叉樹分別進(jìn)行中序遍歷。要求:
1、二叉樹分別采用順序或二叉鏈表存儲。
2、樹中的數(shù)據(jù)類型約定為整型。測試數(shù)據(jù):
1、輸入序列:-+a??*b??-c??d??/e??f??創(chuàng)建二叉樹; 輸出:深度:5
前序序列:-+a*b-cd/ef
中序序列:a+b*c-d-e/f
后序序列:abcd-*+ef/-t:d / e f
2、t=nil
輸入:?
輸出:深度:0 實(shí)驗(yàn)五 圖的遍歷
一、實(shí)驗(yàn)?zāi)康?/p>
熟悉圖的基本操作,掌握圖遍歷的設(shè)計(jì)與實(shí)現(xiàn)。
二、實(shí)驗(yàn)內(nèi)容
問題描述:已知的描述校園景點(diǎn)的圖,實(shí)現(xiàn)對該圖的深度優(yōu)先和廣度優(yōu)先遍歷。要求:
圖采用鄰接矩陣存儲,頂點(diǎn)信息包括景點(diǎn)的名稱和簡單描述。
實(shí)驗(yàn)六 有序表的查找
一、實(shí)驗(yàn)?zāi)康?/p>
1、理解各種查找方法的基本思想
2、熟悉有序表查找方法的算法實(shí)現(xiàn)
二、實(shí)驗(yàn)內(nèi)容 已知一有序的序列{1,3,5,7,9},采用折半法分別查找3和6。
2已知輸入一無序的序列{5,1,3,9,7},創(chuàng)建一棵二叉排序樹,然后對其遍歷,輸出遞增有序的序列。
實(shí)驗(yàn)七 哈希表
一、實(shí)驗(yàn)?zāi)康?/p>
理解哈希表的概念和基本操作;熟悉哈希表的創(chuàng)建、查找、插入的算法實(shí)現(xiàn)。
二、實(shí)驗(yàn)內(nèi)容
問題描述:已知11位好友的名字各不相同,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)哈希表,根據(jù)好友的名字,可以取得其生日。要求:
1、好友的信息包含名字和生日兩個(gè)數(shù)據(jù)項(xiàng),其中好友的名字為主鍵,用漢語拼音形式存放;
2、哈希函數(shù)采?。汉糜衙种兴衅匆糇帜竌scii碼值的和 mod 11(除以1取余);
3、采取線性探測再散列的方式處理沖突。
實(shí)驗(yàn)八 內(nèi)部排序算法的應(yīng)用
一、實(shí)驗(yàn)?zāi)康?/p>
理解各種內(nèi)部排序方法的基本思想;熟悉各種內(nèi)部排序方法的算法實(shí)現(xiàn)
二、實(shí)驗(yàn)內(nèi)容
問題描述:已知一序列{503,087,512,061,908,170,897,275,653,426},分別采取下列排序方法對其進(jìn)行排序:
(1)直接插入排序;
(2)簡單選擇排序;
(3)起泡排序;(4)快速排序;(5)堆排序。