欧美成人永久免费_欧美日本五月天_A级毛片免看在线_国产69无码,亚洲无线观看,精品人妻少妇无码视频,777无码专区,色大片免费网站大全,麻豆国产成人AV网,91视频网络,亚洲色无码自慰

當(dāng)前位置:網(wǎng)站首頁(yè) >> 作文 >> 最新算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版(5篇)

最新算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版(5篇)

格式:DOC 上傳日期:2023-01-11 17:17:52
最新算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版(5篇)
時(shí)間:2023-01-11 17:17:52     小編:zdfb

每個(gè)人都曾試圖在平淡的學(xué)習(xí),、工作和生活中寫(xiě)一篇文章,。寫(xiě)作是培養(yǎng)人的觀察,、聯(lián)想,、想象,、思維和記憶的重要手段,。寫(xiě)范文的時(shí)候需要注意什么呢,?有哪些格式需要注意呢,?下面是小編為大家收集的優(yōu)秀范文,,供大家參考借鑒,,希望可以幫助到有需要的朋友。

算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版篇一

學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)

課程名稱:

學(xué)生學(xué)號(hào):

所屬院部:

(理工類(lèi))

算法與數(shù)據(jù)結(jié)構(gòu) 專(zhuān)業(yè)班級(jí):

學(xué)生姓名:

指導(dǎo)教師: ——20 學(xué)年 第 學(xué)期

金陵科技學(xué)院教務(wù)處制

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)要求

實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫(xiě),,要求書(shū)寫(xiě)工整,。若因課程特點(diǎn)需打印的,要遵照以下字體,、字號(hào),、間距等的具體要求。紙張一律采用a4的紙張,。

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)說(shuō)明

實(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)容與過(guò)程,;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目,。

填寫(xiě)注意事項(xiàng)

(1)細(xì)致觀察,,及時(shí)、準(zhǔn)確,、如實(shí)記錄,。(2)準(zhǔn)確說(shuō)明,層次清晰,。

(3)盡量采用專(zhuān)用術(shù)語(yǔ)來(lái)說(shuō)明事物,。

(4)外文、符號(hào),、公式要準(zhǔn)確,,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書(shū)寫(xiě),,嚴(yán)禁抄襲、復(fù)印,,一經(jīng)發(fā)現(xiàn),,以零分論處,。

實(shí)驗(yàn)報(bào)告批改說(shuō)明

實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真,、仔細(xì),,一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定,。

實(shí)驗(yàn)報(bào)告裝訂要求

實(shí)驗(yàn)批改完畢后,任課老師將每門(mén)課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位,、按學(xué)號(hào)升序排列,,裝訂成冊(cè),并附上一份該門(mén)課程的實(shí)驗(yàn)大綱,。

實(shí)驗(yàn)項(xiàng)目名稱: 順序表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)1 順序表

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握順序表的定位、插入,、刪除等操作,。

二、實(shí)驗(yàn)儀器和設(shè)備

vc6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值,。編寫(xiě)主函數(shù)測(cè)試結(jié)果,。

(2)編寫(xiě)順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x,。如果存在,,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開(kāi)始編號(hào));如果不存在,,返回-1,。編寫(xiě)主函數(shù)測(cè)試結(jié)果。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,,保持順序表的有序性,。

解題思路:首先查找插入的位置,再移位,,最后進(jìn)行插入操作,;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置;然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i,;最后將新結(jié)點(diǎn)x插入到i位置,。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素。

2,、選做題

(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,,要求寫(xiě)一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素),。

程序清單:

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 單鏈表 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)2 單鏈表

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

1,、實(shí)驗(yàn)?zāi)康?/p>

掌握單鏈表的定位,、插入、刪除等操作,。

2,、實(shí)驗(yàn)要求

(1)注意鏈表的空間是動(dòng)態(tài)分配的,某結(jié)點(diǎn)不用之后要及時(shí)進(jìn)行物理刪除,,以便釋放其內(nèi)存空間,。

(2)鏈表不能實(shí)現(xiàn)直接定位,一定注意指針的保存,,防止丟失,。

二、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素,。(2)在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,,保持單鏈表的有序性。

解題思路:首先查找插入的位置然后進(jìn)行插入操作,;從第一個(gè)結(jié)點(diǎn)開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置,;然后在找到的此結(jié)點(diǎn)之前插入新結(jié)點(diǎn);注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作,。

(3)編寫(xiě)實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),,并編寫(xiě)主函數(shù)測(cè)試結(jié)果。

2,、選做題

已知指針la和lb分別指向兩個(gè)無(wú)頭結(jié)點(diǎn)單鏈表的首元結(jié)點(diǎn),。要求編一算法實(shí)現(xiàn),從表la中刪除自第i個(gè)元素起共len個(gè)元素后,,將它們插入到表lb中第j個(gè)元素之前,。程序清單:

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 堆棧和隊(duì)列 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)3 堆棧和隊(duì)列

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握應(yīng)用棧解決問(wèn)題的方法。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法,。

(3)掌握隊(duì)列的存儲(chǔ)結(jié)構(gòu)及基本操作實(shí)現(xiàn),,并能在相應(yīng)的應(yīng)用問(wèn)題中正確選用它們。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)是否配對(duì),。(2)測(cè)試“漢諾塔”問(wèn)題。

(3)假設(shè)稱正讀和反讀都相同的字符序列為”回文”,,試寫(xiě)一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”,。

2、選做題

在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法,。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),,元素值表示作業(yè)的預(yù)計(jì)時(shí)間。入隊(duì)列采取簡(jiǎn)化的短作業(yè)優(yōu)先原則,,若一個(gè)新提交的作業(yè)的預(yù)計(jì)執(zhí)行時(shí)間小于隊(duì)頭和隊(duì)尾作業(yè)的平均時(shí)間,,則插入在隊(duì)頭,否則插入在隊(duì)尾,。程序清單:

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 串 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)4 串

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握串的存儲(chǔ)及應(yīng)用。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)編寫(xiě)輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果,。

(2)編寫(xiě)輸出字符串s中值等于字符ch的所有字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果,。

解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),,在本題中循環(huán)調(diào)用。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),,編程刪除串s從位置i開(kāi)始長(zhǎng)度為k的子串,。

2、選做題

假設(shè)以鏈結(jié)構(gòu)表示串,,編寫(xiě)算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,,若串t中不存在這個(gè)字符,則將串s聯(lián)接在串t的末尾。

提示:為提高程序的通用性,,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤(pán)輸入,。程序清單:

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹(shù) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)5 二叉樹(shù)

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握二叉樹(shù)的生成,,以及前,、中、后序遍歷算法,。(2)掌握應(yīng)用二叉樹(shù)遞歸遍歷思想解決問(wèn)題的方法,。

二、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)建立一棵二叉樹(shù)。對(duì)此樹(shù)進(jìn)行前序遍歷,、中序遍歷及后序遍歷,,輸出遍歷序列。

(2)在第一題基礎(chǔ)上,,求二叉樹(shù)中葉結(jié)點(diǎn)的個(gè)數(shù),。(3)在第一題基礎(chǔ)上,求二叉樹(shù)中結(jié)點(diǎn)總數(shù),。(4)在第一題基礎(chǔ)上,,求二叉樹(shù)的深度。

2,、選做題

已知一棵完全二叉樹(shù)存于順序表sa中,,[1…]存儲(chǔ)結(jié)點(diǎn)的值。試編寫(xiě)算法由此順序存儲(chǔ)結(jié)構(gòu)建立該二叉樹(shù)的二叉鏈表,。

解題思路:根據(jù)完全二叉樹(shù)順序存儲(chǔ)的性質(zhì)來(lái)確定二叉樹(shù)的父子關(guān)系即“還原”了二叉樹(shù),,之后再按照二叉樹(shù)二叉鏈表的構(gòu)造方法進(jìn)行建立。完全二叉樹(shù)順序存儲(chǔ)的一個(gè)重要性質(zhì)為,,第i個(gè)結(jié)點(diǎn)的左孩子是編號(hào)為2i的結(jié)點(diǎn),,第i個(gè)結(jié)點(diǎn)的右孩子是編號(hào)為2i+1的結(jié)點(diǎn)。程序清單:

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 圖 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)6 圖

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)熟練掌握?qǐng)D的基本概念,、構(gòu)造及其存儲(chǔ)結(jié)構(gòu),。

(2)熟練掌握對(duì)圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法,。

二、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)構(gòu)造一個(gè)無(wú)向圖(用鄰接矩陣表示存儲(chǔ)結(jié)構(gòu)),。

(2)對(duì)上面所構(gòu)造的無(wú)向圖,,進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,輸出遍歷序列,。

2,、選做題

采用鄰接表存儲(chǔ)結(jié)構(gòu),,編寫(xiě)一個(gè)判別無(wú)向圖中任意給定的兩個(gè)頂點(diǎn)之間是否存在一條長(zhǎng)度為k的簡(jiǎn)單路徑的算法,。簡(jiǎn)單路徑是指其頂點(diǎn)序列中不含有重復(fù)頂點(diǎn)的路徑。提示:兩個(gè)頂點(diǎn)及k值均作為參數(shù)給出,。程序清單:

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 排序 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)7 排序

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)熟練掌握希爾排序,、堆排序,、直接插入排序、起泡排序,、快速排序,、直接選擇排序、歸并排序和基數(shù)排序的基本概念,。

(2)掌握以上各種排序的算法,。區(qū)分以上不同排序的優(yōu)、缺點(diǎn),。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

用隨機(jī)數(shù)產(chǎn)生100000個(gè)待排序數(shù)據(jù)元素的關(guān)鍵字值,。測(cè)試下列各排序函數(shù)的機(jī)器實(shí)際執(zhí)行時(shí)間(至少測(cè)試兩個(gè)):直接插入排序、希爾排序(增量為4,,2,,1)、冒泡排序,、快速排序,、直接選擇排序、二路歸并排序,、堆排序和基于鏈?zhǔn)疥?duì)列的基數(shù)排序,。

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á)到有序。試編寫(xiě)算法實(shí)現(xiàn)上述排序方法,,并討論此種方法的優(yōu)缺點(diǎn),。程序清單:

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

實(shí)驗(yàn)項(xiàng)目名稱: 查找 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

實(shí)驗(yàn)8 查找

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握順序表查找,、有序表查找,、索引順序表查找的各種算法,。(2)掌握哈希表設(shè)計(jì)。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)在一個(gè)遞增有序的線性表中利用二分查找法查找數(shù)據(jù)元素x,。

2,、選做題

(2)構(gòu)造一個(gè)哈希表,哈希函數(shù)采用除留余數(shù)法,,哈希沖突解決方法采用鏈地址法,。設(shè)計(jì)一個(gè)測(cè)試程序進(jìn)行測(cè)試。

提示:構(gòu)造哈希表只是完成查找的第一步,,大家應(yīng)該掌握在哈希表上進(jìn)行查找的過(guò)程,,可以試著編程序?qū)崿F(xiàn)。程序清單:

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版篇二

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)

課程名稱:

學(xué)生學(xué)號(hào):

所屬院部:

(理工類(lèi))

算法與數(shù)據(jù)結(jié)構(gòu) 專(zhuān)業(yè)班級(jí): 14計(jì)單(2)

1413201007 學(xué)生姓名: 毛卓

計(jì)算機(jī)工程學(xué)院 指導(dǎo)教師: 章海鷗 16 ——20 17 學(xué)年 第 二 學(xué)期

金陵科技學(xué)院教務(wù)處制

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)要求

實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫(xiě),,要求書(shū)寫(xiě)工整,。若因課程特點(diǎn)需打印的,要遵照以下字體,、字號(hào),、間距等的具體要求。紙張一律采用a4的紙張,。

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)說(shuō)明

實(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)容與過(guò)程;實(shí)驗(yàn)結(jié)果與分析,。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目,。

填寫(xiě)注意事項(xiàng)

(1)細(xì)致觀察,及時(shí),、準(zhǔn)確,、如實(shí)記錄。(2)準(zhǔn)確說(shuō)明,,層次清晰,。

(3)盡量采用專(zhuān)用術(shù)語(yǔ)來(lái)說(shuō)明事物。

(4)外文,、符號(hào),、公式要準(zhǔn)確,,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書(shū)寫(xiě),,嚴(yán)禁抄襲,、復(fù)印,一經(jīng)發(fā)現(xiàn),,以零分論處,。

實(shí)驗(yàn)報(bào)告批改說(shuō)明

實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真,、仔細(xì),,一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定,。

實(shí)驗(yàn)報(bào)告裝訂要求

實(shí)驗(yàn)批改完畢后,任課老師將每門(mén)課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位,、按學(xué)號(hào)升序排列,,裝訂成冊(cè),并附上一份該門(mén)課程的實(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)1 順序表

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握順序表的定位、插入,、刪除等操作,。

二、實(shí)驗(yàn)儀器和設(shè)備

vc6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值,。編寫(xiě)主函數(shù)測(cè)試結(jié)果,。

(2)編寫(xiě)順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x,。如果存在,,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開(kāi)始編號(hào));如果不存在,,返回-1,。編寫(xiě)主函數(shù)測(cè)試結(jié)果。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,,保持順序表的有序性,。

解題思路:首先查找插入的位置,再移位,最后進(jìn)行插入操作,;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置,;然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置,。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素,。

2、選做題

(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,,要求寫(xiě)一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素),。

程序清單:

(1):/*編寫(xiě)程序建立一個(gè)順序表,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值,。*/ #include

typedef int datatype;#define maxsize 1024 typedef struct { datatype data[maxsize];int last;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

}sequenlist;void main(){ sequenlist l;int i,n;printf(“請(qǐng)輸入元素個(gè)數(shù):”);scanf(“%d”,&n);printf(“n請(qǐng)輸入元素:”);for(i=0;i

如果不存在,,返回-1。*/ #include

typedef int datatype;#define maxsize 1024 typedef struct { datatype data[maxsize];int last;}sequenlist;

int fun(sequenlist l,int x,int n){

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

} int i;for(i=0;i

} int i,n,y;int x;

printf(“請(qǐng)輸入元素個(gè)數(shù):”);scanf(“%d”,&n);printf(“n請(qǐng)輸入元素:”);for(i=0;i

printf(“n請(qǐng)輸入要查找的數(shù)據(jù)元素:”);scanf(“%d”,&x);y=fun(l,x,n);if(y==-1)else printf(“n數(shù)據(jù)元素 %d 所在的位置為 %d n”,x,y);printf(“n所要查找的數(shù)據(jù)元素不存在,。n”);(3): /*在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,,保持順序表的有序性。

解題思路:首先查找插入的位置,,再移位,最后進(jìn)行插入操作,;

從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置,;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置,。*/ #define maxsize 100 typedef struct{

int data[maxsize];

int last;}sequenlist;main(){

int i,x,j;

sequenlist l={{1,3,5,6,7,9},5};

printf(“n插入元素前的數(shù)據(jù)為:”);

for(i=0;i<=;i++)

printf(“%2d”,[i]);

printf(“n請(qǐng)輸入要插入的元素:”);

scanf(“%d”,&x);

for(i=1;i<=;i++)

if([i-1]>x)break;

if(i>)

{

[ +1]=x;

}

else

{

for(j=;j>=i-1;j--)[j+1]=[j];[i-1]=x;

}

++;

printf(“插入元素后的數(shù)據(jù)為:n”);

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

for(j=0;j<=;j++)

printf(“%3d”,[j]);

printf(“n”);}(4): /*刪除順序表中所有等于x的數(shù)據(jù)元素,。*/ #define maxsize 100 typedef struct{

int data[maxsize];

int last;}sequenlist;main(){

int i,j,x=0,k=0;

sequenlist l={{1,3,5,7,2,4,6,8,2,9},9};

printf(“n原數(shù)據(jù)為:”);

for(i=0;i<=;i++)printf(“%3d”,[i]);

printf(“n請(qǐng)輸入要?jiǎng)h除的數(shù)據(jù):”);

scanf(“%d”,&x);

for(i=1;i<=+1;i++)

if([i-1]==x){

for(j=i;j<=+1;j++)[j-1]=[j];

--;

i--;

k=1;

}

if(k==1){

printf(“刪除后的數(shù)據(jù)為:n”);

for(j=0;j<=;j++)printf(“%3d”,[j]);

}

else printf(“not found!n”);

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

printf(“n”);}

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)(1)結(jié)果: 請(qǐng)輸入元素個(gè)數(shù):5

請(qǐng)輸入元素:1 2 3 4 5

元素輸出:1 2 3 4 5(2)結(jié)果: 請(qǐng)輸入元素個(gè)數(shù):5

請(qǐng)輸入元素:1 2 3 4 5

請(qǐng)輸入要查找的數(shù)據(jù)元素:5

數(shù)據(jù)元素5所在的位置為 4(3)結(jié)果:插入數(shù)據(jù)前的元素為:1 3 5 6 7 9

請(qǐng)輸入要插入的元素為:10

插入元素后的數(shù)據(jù)為:

5 6 7 9 10(4)結(jié)果:原數(shù)據(jù)為:1 3 5 7 2 4 6 8 2 9

請(qǐng)輸入要?jiǎng)h除的數(shù)據(jù)為:7

刪除后的數(shù)據(jù)為: 3 5 2 4 6 8 2 9

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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)注意鏈表的空間是動(dòng)態(tài)分配的,,某結(jié)點(diǎn)不用之后要及時(shí)進(jìn)行物理刪除,,以便釋放其內(nèi)存空間。

(2)鏈表不能實(shí)現(xiàn)直接定位,,一定注意指針的保存,,防止丟失。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素,。(2)在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,,保持單鏈表的有序性。

解題思路:首先查找插入的位置然后進(jìn)行插入操作,;從第一個(gè)結(jié)點(diǎn)開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置,;然后在找到的此結(jié)點(diǎn)之前插入新結(jié)點(diǎn);注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作,。

(3)編寫(xiě)實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),,并編寫(xiě)主函數(shù)測(cè)試結(jié)果。

2,、選做題

已知指針la和lb分別指向兩個(gè)無(wú)頭結(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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)3 堆棧和隊(duì)列

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握應(yīng)用棧解決問(wèn)題的方法,。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法,。

(3)掌握隊(duì)列的存儲(chǔ)結(jié)構(gòu)及基本操作實(shí)現(xiàn),并能在相應(yīng)的應(yīng)用問(wèn)題中正確選用它們,。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)是否配對(duì),。(2)測(cè)試“漢諾塔”問(wèn)題。

(3)假設(shè)稱正讀和反讀都相同的字符序列為”回文”,,試寫(xiě)一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”,。

2、選做題

在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法,。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),,元素值表示作業(yè)的預(yù)計(jì)時(shí)間。入隊(duì)列采取簡(jiǎn)化的短作業(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)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)4 串

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握串的存儲(chǔ)及應(yīng)用,。

二、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),并用主函數(shù)測(cè)試結(jié)果,。

(2)編寫(xiě)輸出字符串s中值等于字符ch的所有字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果。

解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),,在本題中循環(huán)調(diào)用,。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),編程刪除串s從位置i開(kāi)始長(zhǎng)度為k的子串,。

2,、選做題

假設(shè)以鏈結(jié)構(gòu)表示串,編寫(xiě)算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,,若串t中不存在這個(gè)字符,,則將串s聯(lián)接在串t的末尾。

提示:為提高程序的通用性,,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤(pán)輸入,。程序清單:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹(shù) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)5 二叉樹(shù)

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握二叉樹(shù)的生成,,以及前,、中、后序遍歷算法,。(2)掌握應(yīng)用二叉樹(shù)遞歸遍歷思想解決問(wèn)題的方法,。

二、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)建立一棵二叉樹(shù)。對(duì)此樹(shù)進(jìn)行前序遍歷,、中序遍歷及后序遍歷,,輸出遍歷序列。

(2)在第一題基礎(chǔ)上,,求二叉樹(shù)中葉結(jié)點(diǎn)的個(gè)數(shù),。(3)在第一題基礎(chǔ)上,求二叉樹(shù)中結(jié)點(diǎn)總數(shù),。(4)在第一題基礎(chǔ)上,,求二叉樹(shù)的深度。

2,、選做題

已知一棵完全二叉樹(shù)存于順序表sa中,,[1…]存儲(chǔ)結(jié)點(diǎn)的值。試編寫(xiě)算法由此順序存儲(chǔ)結(jié)構(gòu)建立該二叉樹(shù)的二叉鏈表,。

解題思路:根據(jù)完全二叉樹(shù)順序存儲(chǔ)的性質(zhì)來(lái)確定二叉樹(shù)的父子關(guān)系即“還原”了二叉樹(shù),,之后再按照二叉樹(shù)二叉鏈表的構(gòu)造方法進(jìn)行建立。完全二叉樹(shù)順序存儲(chǔ)的一個(gè)重要性質(zhì)為,,第i個(gè)結(jié)點(diǎn)的左孩子是編號(hào)為2i的結(jié)點(diǎn),,第i個(gè)結(jié)點(diǎn)的右孩子是編號(hào)為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)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)6 圖

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)熟練掌握?qǐng)D的基本概念,、構(gòu)造及其存儲(chǔ)結(jié)構(gòu)。

(2)熟練掌握對(duì)圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法,。

二,、實(shí)驗(yàn)儀器和設(shè)備

visual c++6.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)構(gòu)造一個(gè)無(wú)向圖(用鄰接矩陣表示存儲(chǔ)結(jié)構(gòu)),。

(2)對(duì)上面所構(gòu)造的無(wú)向圖,進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,,輸出遍歷序列,。

2、選做題

采用鄰接表存儲(chǔ)結(jié)構(gòu),,編寫(xiě)一個(gè)判別無(wú)向圖中任意給定的兩個(gè)頂點(diǎn)之間是否存在一條長(zhǎng)度為k的簡(jiǎn)單路徑的算法,。簡(jiǎn)單路徑是指其頂點(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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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è)備

visual c++6.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

用隨機(jī)數(shù)產(chǎn)生100000個(gè)待排序數(shù)據(jù)元素的關(guān)鍵字值。測(cè)試下列各排序函數(shù)的機(jī)器實(shí)際執(zhí)行時(shí)間(至少測(cè)試兩個(gè)):直接插入排序,、希爾排序(增量為4,,2,1),、冒泡排序,、快速排序、直接選擇排序,、二路歸并排序,、堆排序和基于鏈?zhǔn)疥?duì)列的基數(shù)排序。

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á)到有序,。試編寫(xiě)算法實(shí)現(xiàn)上述排序方法,,并討論此種方法的優(yōu)缺點(diǎn)。程序清單:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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è)備

visual c++6.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)在一個(gè)遞增有序的線性表中利用二分查找法查找數(shù)據(jù)元素x,。

2、選做題

(2)構(gòu)造一個(gè)哈希表,,哈希函數(shù)采用除留余數(shù)法,哈希沖突解決方法采用鏈地址法,。設(shè)計(jì)一個(gè)測(cè)試程序進(jìn)行測(cè)試,。

提示:構(gòu)造哈希表只是完成查找的第一步,大家應(yīng)該掌握在哈希表上進(jìn)行查找的過(guò)程,,可以試著編程序?qū)崿F(xiàn),。程序清單:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版篇三

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)

課程名稱:

學(xué)生學(xué)號(hào):

所屬院部:

(理工類(lèi))

算法與數(shù)據(jù)結(jié)構(gòu) 專(zhuān)業(yè)班級(jí):

學(xué)生姓名:

指導(dǎo)教師: 14 ——20 15 學(xué)年 第 二 學(xué)期

金陵科技學(xué)院教務(wù)處制

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)要求

實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫(xiě),要求書(shū)寫(xiě)工整,。若因課程特點(diǎn)需打印的,,要遵照以下字體、字號(hào),、間距等的具體要求,。紙張一律采用a4的紙張。

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)說(shuō)明

實(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)容與過(guò)程,;實(shí)驗(yàn)結(jié)果與分析,。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。

填寫(xiě)注意事項(xiàng)

(1)細(xì)致觀察,,及時(shí),、準(zhǔn)確、如實(shí)記錄,。(2)準(zhǔn)確說(shuō)明,,層次清晰。

(3)盡量采用專(zhuān)用術(shù)語(yǔ)來(lái)說(shuō)明事物,。

(4)外文,、符號(hào)、公式要準(zhǔn)確,,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào),。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書(shū)寫(xiě),,嚴(yán)禁抄襲、復(fù)印,,一經(jīng)發(fā)現(xiàn),,以零分論處。

實(shí)驗(yàn)報(bào)告批改說(shuō)明

實(shí)驗(yàn)報(bào)告的批改要及時(shí),、認(rèn)真,、仔細(xì),一律用紅色筆批改,。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定。

實(shí)驗(yàn)報(bào)告裝訂要求

實(shí)驗(yàn)批改完畢后,,任課老師將每門(mén)課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位,、按學(xué)號(hào)升序排列,裝訂成冊(cè),,并附上一份該門(mén)課程的實(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)成績(jī): 批改教師: 批改時(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

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)編寫(xiě)程序建立一個(gè)順序表,,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值,。編寫(xiě)主函數(shù)測(cè)試結(jié)果。

(2)編寫(xiě)順序表定位操作子函數(shù),,在順序表中查找是否存在數(shù)據(jù)元素x,。如果存在,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開(kāi)始編號(hào)),;如果不存在,,返回-1。編寫(xiě)主函數(shù)測(cè)試結(jié)果,。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,,保持順序表的有序性。

解題思路:首先查找插入的位置,,再移位,,最后進(jìn)行插入操作;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置,;然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i,;最后將新結(jié)點(diǎn)x插入到i位置,。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素。

2,、選做題

(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,,要求寫(xiě)一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。

程序清單:

1,、(1)#include

#include

#define maxsize 100 typedef int datatype;typedef struct {

datatype a[maxsize];

int size;}sequence_list;sequence_list mylist;void display(sequence_list slt)

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

{

int i;

if(==0)

printf(“n 順表表是空的”);

else

for(i=0;i

printf(“%5d”,slt.a[i]);} void init(sequence_list *slt){

slt->size=0;} void main(){ int i,number;init(&mylist);printf(“順序表是空的請(qǐng)建立順序表!”);printf(“n”);printf(“請(qǐng)輸入順序表中的元素個(gè)數(shù),!n”);scanf(“%d”,&number);=number;for(i=0;i

scanf(“%d”,&mylist.a[i]);}

}(2)#include

#include

#define maxsize 100 typedef int datatype;typedef struct {

datatype a[maxsize];

int size;}sequence_list;sequence_list mylist;void display(sequence_list slt){

int i;display(mylist);printf(“n”);

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

if(==0)

printf(“n 順表表是空的”);

else

for(i=0;i

printf(“%5d”,slt.a[i]);} void init(sequence_list *slt){

slt->size=0;} int find(sequence_list *slt,int x){ int i,a;for(i=0;i

size;i++){

if(x==slt->a[i])

{

a=i;

break;

} } if(i!=slt->size)

return a;

else

return-1;} void main(){ int i,number,a,b;init(&mylist);printf(“順序表是空的請(qǐng)建立順序表,!”);printf(“n”);printf(“請(qǐng)輸入順序表中的元素個(gè)數(shù)!n”);scanf(“%d”,&number);=number;for(i=0;i

scanf(“%d”,&mylist.a[i]);} display(mylist);printf(“n”);printf(“輸入要查找的數(shù):”);scanf(“%d”,&a);b=find(&mylist,a);

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

} if(b!=-1){ printf(“順序表的下標(biāo)為:%dn”,b);} else printf(“can not be found!”);(3)#include

#include

#define maxsize 100 typedef int datatype;typedef struct { datatype a[maxsize];int size;}sequence_list;sequence_list mylist;void display(sequence_list slt){ int i;if(==0)printf(“n 順表表是空的”);else for(i=0;i

size=0;} void sort(sequence_list *slt){ int i,j,temp;//交換法排序

for(i=0;i

size;i++){

for(j=i+1;j

size;j++)

{

if(slt->a[i]>slt->a[j])

{

temp=slt->a[i];

slt->a[i]=slt->a[j];

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

slt->a[j]=temp;

}

} } } void append(sequence_list *slt,int x){ slt->a[slt->size]=x;slt->size++;sort(&mylist);} void main(){ int i,number,x;init(&mylist);printf(“順序表是空的請(qǐng)建立順序表,!”);printf(“n”);printf(“請(qǐng)輸入順序表中的元素個(gè)數(shù)!n”);scanf(“%d”,&number);=number;for(i=0;i

scanf(“%d”,&mylist.a[i]);} display(mylist);sort(&mylist);printf(“n”);display(mylist);printf(“n”);printf(“輸入要插入的元素:”);printf(“n”);scanf(“%d”,&x);append(&mylist,x);display(mylist);printf(“n”);}(4)#include

#include

#define maxsize 100

typedef int datatype;typedef struct

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

{ datatype a[maxsize];int size;}sequence_list;sequence_list mylist;void display(sequence_list slt){ int i;if( == 0)

printf(“n 順表表是空的”);else for(i = 0;i

printf(“%5d”, slt.a[i]);} void init(sequence_list *slt){ slt->size = 0;} void sort(sequence_list *slt){ int i, j, temp;//交換法排序

for(i = 0;i

size;i++){

for(j = i + 1;j

size;j++)

{

if(slt->a[i]>slt->a[j])

{

temp = slt->a[i];

slt->a[i] = slt->a[j];

slt->a[j] = temp;

}

} } } void del(sequence_list *slt, int x){ int m[maxsize];int i, n = 0, j, a = 0;for(i = 0;i

size;i++){

if(slt->a[i]!= x)

{

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

m[n++] = slt->a[i];

}

else a++;

} slt->size = slt->size1, from, to, denpend_on);//先將初始塔的前n-1個(gè)盤(pán)子借助目的塔移動(dòng)到借用塔上

move(n, from, to);//將剩下的一個(gè)盤(pán)子移動(dòng)到目的塔上

hanoi(n1);} int ispalindrome(char * str){ int len = strlen(str);int i = 0;for(;i

if(str[i]!= str[len1])return 0;} return 1;} void main(){ char * str =(char *)malloc(init_size * sizeof(char));char ch;int i = 0;//字符串當(dāng)前字符數(shù)

int len = init_size;//字符串空間大小

while(ch = getchar()){ // 循環(huán)錄入字符串

if(ch == '@'){ ///如果按回車(chē)鍵,則結(jié)束

str[i] = '';///字符串結(jié)束標(biāo)志

break;

}

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

if(i < len-1){

str[i] = ch;

}

else {

str =(char *)realloc(str,(len + incr_size)* sizeof(char));//增加存儲(chǔ)空間

str[i] = ch;

len += incr_size;//重新記錄字符串空間

}

i++;} if(ispalindrome(str)!= 0){

printf(“yesn”);} else {

printf(“non”);} }

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)(1)

(2)

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

通過(guò)該實(shí)驗(yàn)我熟練掌握了如何通過(guò)堆棧和隊(duì)列來(lái)判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)是否配對(duì),,測(cè)試“漢諾塔”問(wèn)題以及判斷回文數(shù),。

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)4 串

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握串的存儲(chǔ)及應(yīng)用,。

二,、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果。

(2)編寫(xiě)輸出字符串s中值等于字符ch的所有字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果,。

解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用,。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),,編程刪除串s從位置i開(kāi)始長(zhǎng)度為k的子串。

2,、選做題

假設(shè)以鏈結(jié)構(gòu)表示串,,編寫(xiě)算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,若串t中不存在這個(gè)字符,,則將串s聯(lián)接在串t的末尾,。

提示:為提高程序的通用性,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤(pán)輸入,。程序清單:

(1)#include

void main(){ char s[100],ch,c;int i;printf(“創(chuàng)建字符串,!”);gets(s);printf(“輸入要查找的字符:”);scanf(“%c”,&ch);for(i=0;s[i]!='';i++);{

if(ch==s[i])

{

c=s[i];

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

} }

} if(s[i]){ printf(“輸出字符:”);putchar(c);printf(“n”);} else { printf(“沒(méi)有找到,!”);}(2)#include

#include

void find(char *s,char ch){ int i,j=0;char c;

for(i=0;s[i]!='';i++){

if(ch==s[i])

{

c=s[i];

j++;

}

}

if((i-1)!=strlen(s)){

printf(“有%d個(gè)元素”,j);printf(“n”);printf(“輸出字符:”);putchar(c);printf(“n”);} else {

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

printf(“沒(méi)有找到,!”);} } void main(){ char s[100],ch;int i;printf(“創(chuàng)建字符串,!”);gets(s);printf(“輸入要查找的字符:”);scanf(“%c”,&ch);find(s,ch);}(3)#include

#include

typedef struct linknode { char data;struct linknode *next;}linkstring;linkstring *creatlink(linkstring *s){ linkstring *p = null, *q = null;char ch;ch = getchar();while(ch!= '$'){

p = malloc(sizeof(linkstring));

p->data = ch;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

if(s == null)s = p, q = p;

else

q->next = p, q = p;

ch = getchar();} if(q->next!= null)q->next = null;return s;} linkstring *delete(linkstring *s, int i, int k)//足夠長(zhǎng) { linkstring *p = s, *q;int m = 2;while(m

p = p->next;

m++;} m = 0;if(i == 1)while(m

假定字符串金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

s = p->next;

free(p);

p = s;

m++;} else while(m

q = p->next;

p->next = q->next;

free(q);

m++;} return s;} void output(linkstring *s){ linkstring *p = s;while(p!= null){

printf(“%2c”, p->data);

p = p->next;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

} } int main(){ linkstring *s = null;int i, k;s = creatlink(s);output(s);printf(“n”);printf(“please enter the location and the length:”);scanf(“%d%d”, &i, &k);s = delete(s, i, k);getchar();output(s);printf(“n”);return 0;}

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))通過(guò)該實(shí)驗(yàn)我熟練掌握了如何建立一個(gè)串,,如何查找串中的元素以及

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

刪除指定的子串。

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹(shù) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)5 二叉樹(shù)

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握二叉樹(shù)的生成,,以及前、中,、后序遍歷算法,。(2)掌握應(yīng)用二叉樹(shù)遞歸遍歷思想解決問(wèn)題的方法。

二,、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)建立一棵二叉樹(shù),。對(duì)此樹(shù)進(jìn)行前序遍歷,、中序遍歷及后序遍歷,輸出遍歷序列,。

(2)在第一題基礎(chǔ)上,,求二叉樹(shù)中葉結(jié)點(diǎn)的個(gè)數(shù)。(3)在第一題基礎(chǔ)上,,求二叉樹(shù)中結(jié)點(diǎn)總數(shù),。(4)在第一題基礎(chǔ)上,求二叉樹(shù)的深度,。

2,、選做題

已知一棵完全二叉樹(shù)存于順序表sa中,[1…]存儲(chǔ)結(jié)點(diǎn)的值,。試編寫(xiě)算法由此順序存儲(chǔ)結(jié)構(gòu)建立該二叉樹(shù)的二叉鏈表,。

解題思路:根據(jù)完全二叉樹(shù)順序存儲(chǔ)的性質(zhì)來(lái)確定二叉樹(shù)的父子關(guān)系即“還原”了二叉樹(shù),之后再按照二叉樹(shù)二叉鏈表的構(gòu)造方法進(jìn)行建立,。完全二叉樹(shù)順序存儲(chǔ)的一個(gè)重要性質(zhì)為,,第i個(gè)結(jié)點(diǎn)的左孩子是編號(hào)為2i的結(jié)點(diǎn),第i個(gè)結(jié)點(diǎn)的右孩子是編號(hào)為2i+1的結(jié)點(diǎn),。程序清單:

(1)#include

#include

#include

int twochild;//有兩個(gè)孩子的結(jié)點(diǎn)數(shù) int leaf;//葉子數(shù) int node;//結(jié)點(diǎn)數(shù)

using namespace std;typedef struct binode{ int data;struct binode *lchild,*rchild;}binode,*bitree;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

typedef struct{ bitree elem[100];int top;}stack;

bitree creat_bt(){ //按擴(kuò)展前序建二叉樹(shù) bitree t;int x;scanf(“%d”,&x);if(x==0)t=null;//以0作為結(jié)束

else { t=(bitree)malloc(sizeof(binode));t->data=x;printf(“請(qǐng)輸入%d結(jié)點(diǎn)的左孩子結(jié)點(diǎn)(若沒(méi)有,,請(qǐng)輸入 0)”,t->data);t->lchild=creat_bt();printf(“請(qǐng)輸入%d結(jié)點(diǎn)的右孩子結(jié)點(diǎn)(若沒(méi)有,請(qǐng)輸入 0)”,t->data);t->rchild=creat_bt();} return t;}

void preorder(bitree t){ if(t){ printf(“%dn”,t->data);preorder(t->lchild);preorder(t->rchild);} }

void inorder(bitree t){ if(t){ inorder(t->lchild);printf(“%dn”,t->data);inorder(t->rchild);} }

void postorder(bitree t){ if(t){ postorder(t->lchild);

算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版篇四

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)

課程名稱:

學(xué)生學(xué)號(hào):

所屬院部:

(理工類(lèi))

算法與數(shù)據(jù)結(jié)構(gòu) 專(zhuān)業(yè)班級(jí): 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ū)寫(xiě)要求

實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫(xiě),要求書(shū)寫(xiě)工整,。若因課程特點(diǎn)需打印的,,要遵照以下字體、字號(hào),、間距等的具體要求,。紙張一律采用a4的紙張。

實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)說(shuō)明

實(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)容與過(guò)程,;實(shí)驗(yàn)結(jié)果與分析,。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。

填寫(xiě)注意事項(xiàng)

(1)細(xì)致觀察,,及時(shí),、準(zhǔn)確、如實(shí)記錄,。(2)準(zhǔn)確說(shuō)明,,層次清晰。

(3)盡量采用專(zhuān)用術(shù)語(yǔ)來(lái)說(shuō)明事物,。

(4)外文,、符號(hào),、公式要準(zhǔn)確,,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書(shū)寫(xiě),,嚴(yán)禁抄襲,、復(fù)印,一經(jīng)發(fā)現(xiàn),,以零分論處,。

實(shí)驗(yàn)報(bào)告批改說(shuō)明

實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真,、仔細(xì),,一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用百分制,,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定,。

實(shí)驗(yàn)報(bào)告裝訂要求

實(shí)驗(yàn)批改完畢后,任課老師將每門(mén)課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位,、按學(xué)號(hào)升序排列,,裝訂成冊(cè),并附上一份該門(mén)課程的實(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)成績(jī): 批改教師: 批改時(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)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)順序表,,并逐個(gè)輸出順序表中所有數(shù)據(jù)元素的值。編寫(xiě)主函數(shù)測(cè)試結(jié)果,。

(2)編寫(xiě)順序表定位操作子函數(shù),,在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,,返回順序表中和x值相等的第1個(gè)數(shù)據(jù)元素的序號(hào)(序號(hào)從0開(kāi)始編號(hào)),;如果不存在,返回-1,。編寫(xiě)主函數(shù)測(cè)試結(jié)果,。(3)在遞增有序的順序表中插入一個(gè)新結(jié)點(diǎn)x,保持順序表的有序性,。

解題思路:首先查找插入的位置,,再移位,最后進(jìn)行插入操作,;從第一個(gè)元素開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置,;然后將從表尾開(kāi)始依次將元素后移一個(gè)位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置,。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素,。

2,、選做題

(5)已知兩個(gè)順序表a和b按元素值遞增有序排列,,要求寫(xiě)一算法實(shí)現(xiàn)將a和b歸并成一個(gè)按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。

程序清單:

#include

#include

#define maxsize 100 typedef struct { int data[maxsize];int last;

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

} 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

金陵科技學(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)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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)注意鏈表的空間是動(dòng)態(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)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)程序建立一個(gè)單鏈表,并逐個(gè)輸出單鏈表中所有數(shù)據(jù)元素,。(2)在遞增有序的單鏈表中插入一個(gè)新結(jié)點(diǎn)x,,保持單鏈表的有序性。

解題思路:首先查找插入的位置然后進(jìn)行插入操作,;從第一個(gè)結(jié)點(diǎn)開(kāi)始找到第一個(gè)大于該新結(jié)點(diǎn)值的結(jié)點(diǎn)即為插入位置;然后在找到的此結(jié)點(diǎn)之前插入新結(jié)點(diǎn),;注意保留插入位置之前結(jié)點(diǎn)的指針才能完成插入操作,。

(3)編寫(xiě)實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表就地逆置的子函數(shù),并編寫(xiě)主函數(shù)測(cè)試結(jié)果,。

2,、選做題

已知指針la和lb分別指向兩個(gè)無(wú)頭結(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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)3 堆棧和隊(duì)列

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握應(yīng)用棧解決問(wèn)題的方法。(2)掌握利用棧進(jìn)行表達(dá)式求和的算法,。

(3)掌握隊(duì)列的存儲(chǔ)結(jié)構(gòu)及基本操作實(shí)現(xiàn),,并能在相應(yīng)的應(yīng)用問(wèn)題中正確選用它們。

二、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0/ visual c++

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)判斷一個(gè)算術(shù)表達(dá)式中開(kāi)括號(hào)和閉括號(hào)是否配對(duì)。(2)測(cè)試“漢諾塔”問(wèn)題,。

(3)假設(shè)稱正讀和反讀都相同的字符序列為”回文”,,試寫(xiě)一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”。

2,、選做題

在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)輸出受限的雙端循環(huán)隊(duì)列的入列和出列算法,。設(shè)每個(gè)元素表示一個(gè)待處理的作業(yè),元素值表示作業(yè)的預(yù)計(jì)時(shí)間,。入隊(duì)列采取簡(jiǎn)化的短作業(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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)4 串

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

掌握串的存儲(chǔ)及應(yīng)用,。

二,、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0/ visual c++

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)編寫(xiě)輸出字符串s中值等于字符ch的第一個(gè)字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果。

(2)編寫(xiě)輸出字符串s中值等于字符ch的所有字符的函數(shù),,并用主函數(shù)測(cè)試結(jié)果,。

解題思路:可以將第一題程序改進(jìn)成一個(gè)子函數(shù),在本題中循環(huán)調(diào)用,。(3)設(shè)字符串采用單字符的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),,編程刪除串s從位置i開(kāi)始長(zhǎng)度為k的子串。

2,、選做題

假設(shè)以鏈結(jié)構(gòu)表示串,,編寫(xiě)算法實(shí)現(xiàn)將串s插入到串t中某個(gè)字符之后,若串t中不存在這個(gè)字符,,則將串s聯(lián)接在串t的末尾,。

提示:為提高程序的通用性,插入位置字符應(yīng)設(shè)計(jì)為從鍵盤(pán)輸入,。程序清單:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)項(xiàng)目名稱: 二叉樹(shù) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)5 二叉樹(shù)

一,、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)掌握二叉樹(shù)的生成,,以及前、中,、后序遍歷算法,。(2)掌握應(yīng)用二叉樹(shù)遞歸遍歷思想解決問(wèn)題的方法。

二,、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0/ visual c++

三、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1,、必做題

(1)建立一棵二叉樹(shù),。對(duì)此樹(shù)進(jìn)行前序遍歷、中序遍歷及后序遍歷,,輸出遍歷序列,。

(2)在第一題基礎(chǔ)上,求二叉樹(shù)中葉結(jié)點(diǎn)的個(gè)數(shù),。(3)在第一題基礎(chǔ)上,,求二叉樹(shù)中結(jié)點(diǎn)總數(shù),。(4)在第一題基礎(chǔ)上,求二叉樹(shù)的深度,。

2,、選做題

已知一棵完全二叉樹(shù)存于順序表sa中,[1…]存儲(chǔ)結(jié)點(diǎn)的值,。試編寫(xiě)算法由此順序存儲(chǔ)結(jié)構(gòu)建立該二叉樹(shù)的二叉鏈表。

解題思路:根據(jù)完全二叉樹(shù)順序存儲(chǔ)的性質(zhì)來(lái)確定二叉樹(shù)的父子關(guān)系即“還原”了二叉樹(shù),,之后再按照二叉樹(shù)二叉鏈表的構(gòu)造方法進(jìn)行建立,。完全二叉樹(shù)順序存儲(chǔ)的一個(gè)重要性質(zhì)為,,第i個(gè)結(jié)點(diǎn)的左孩子是編號(hào)為2i的結(jié)點(diǎn),,第i個(gè)結(jié)點(diǎn)的右孩子是編號(hào)為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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(shí)間:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)6 圖

一、實(shí)驗(yàn)?zāi)康暮鸵?/p>

(1)熟練掌握?qǐng)D的基本概念,、構(gòu)造及其存儲(chǔ)結(jié)構(gòu),。

(2)熟練掌握對(duì)圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法。

二,、實(shí)驗(yàn)儀器和設(shè)備

turbo c 2.0/ visual c++

三,、實(shí)驗(yàn)內(nèi)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)構(gòu)造一個(gè)無(wú)向圖(用鄰接矩陣表示存儲(chǔ)結(jié)構(gòu)),。

(2)對(duì)上面所構(gòu)造的無(wú)向圖,,進(jìn)行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,輸出遍歷序列,。

2,、選做題

采用鄰接表存儲(chǔ)結(jié)構(gòu),編寫(xiě)一個(gè)判別無(wú)向圖中任意給定的兩個(gè)頂點(diǎn)之間是否存在一條長(zhǎng)度為k的簡(jiǎn)單路徑的算法,。簡(jiǎn)單路徑是指其頂點(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)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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)容與過(guò)程(含程序清單及流程圖)

1,、必做題

用隨機(jī)數(shù)產(chǎn)生100000個(gè)待排序數(shù)據(jù)元素的關(guān)鍵字值。測(cè)試下列各排序函數(shù)的機(jī)器實(shí)際執(zhí)行時(shí)間(至少測(cè)試兩個(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á)到有序,。試編寫(xiě)算法實(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)體會(huì)(遇到問(wèn)題及解決辦法,,編程后的心得體會(huì))

金陵科技學(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)成績(jī): 批改教師: 批改時(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)容與過(guò)程(含程序清單及流程圖)

1、必做題

(1)在一個(gè)遞增有序的線性表中利用二分查找法查找數(shù)據(jù)元素x,。

2,、選做題

(2)構(gòu)造一個(gè)哈希表,哈希函數(shù)采用除留余數(shù)法,,哈希沖突解決方法采用鏈地址法,。設(shè)計(jì)一個(gè)測(cè)試程序進(jìn)行測(cè)試。

提示:構(gòu)造哈希表只是完成查找的第一步,,大家應(yīng)該掌握在哈希表上進(jìn)行查找的過(guò)程,,可以試著編程序?qū)崿F(xiàn)。程序清單:

金陵科技學(xué)院實(shí)驗(yàn)報(bào)告

四,、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)

五,、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))

算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊(cè)電子版篇五

北 京 郵 電 大 學(xué)

計(jì) 算 機(jī) 科 學(xué) 與 技 術(shù) 學(xué) 院

算 法 與 數(shù) 據(jù) 結(jié) 構(gòu)

實(shí) 驗(yàn) 指 導(dǎo) 書(shū)

楊俊,、徐塞虹,、漆濤 編著

2006年9月 算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書(shū)

目錄

實(shí)驗(yàn)要求....................................................................................................................................3 試驗(yàn)

一、約瑟夫環(huán)..............................................................................…………………..……4 試驗(yàn)

二,、長(zhǎng)整數(shù)四則運(yùn)算運(yùn)算………………………………………………………………4 實(shí)驗(yàn)三,、八皇后.....................................……..........................................................................5 實(shí)驗(yàn)

四,、騎士遍歷......................................……………………..............................................5 實(shí)驗(yàn)

五,、桌面計(jì)算器...............................……………..............................................................6 實(shí)驗(yàn)

六,、平衡排序二叉樹(shù)....................…...…….....................................................................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ū)

實(shí)驗(yàn)要求

一、本課程在講課期間需要做上機(jī)實(shí)驗(yàn),,目的之一是檢查學(xué)生對(duì)所學(xué)算法的掌握和理解程度,;其次是鍛煉學(xué)生的團(tuán)隊(duì)合作精神。

二,、成績(jī):

1,、編碼:占整個(gè)實(shí)驗(yàn)成績(jī)的50%;

2,、測(cè)試:占整個(gè)實(shí)驗(yàn)成績(jī)的20%,;

3、文檔:占整個(gè)實(shí)驗(yàn)成績(jī)的30%,。

三,、按時(shí)提交上機(jī)文檔,實(shí)驗(yàn)文檔包含以下各項(xiàng):

1,、問(wèn)題描述:實(shí)驗(yàn)題目,、內(nèi)容和要求;

2,、算法思路:實(shí)驗(yàn)小組對(duì)問(wèn)題的解決方法的文字描述,;

3、算法描述:用類(lèi)算法語(yǔ)言等對(duì)算法進(jìn)行描述,;

4,、源程序及驅(qū)動(dòng)程序:上機(jī)實(shí)驗(yàn)編制的代碼源程序及程序運(yùn)行環(huán)境;

5,、測(cè)試數(shù)據(jù):對(duì)算法的測(cè)試用例,;

6、結(jié)果分析和結(jié)論:對(duì)算法及測(cè)試結(jié)果的分析及結(jié)論,;

7,、心得體會(huì):通過(guò)實(shí)驗(yàn)獲得的心得體會(huì);

8,、分工及簽名:最后是小組成員的分工及簽名,。

北京郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院-1-算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)指導(dǎo)書(shū)

實(shí)驗(yàn)

一、約瑟夫環(huán)

一,、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二,、問(wèn)題描述:約瑟夫環(huán)問(wèn)題是:n個(gè)人p0,p1,…pn 圍坐成一個(gè)圓環(huán)。每個(gè)人pk持有一個(gè)秘密的數(shù)字ck,。0 < ck <= m,。開(kāi)始時(shí)隨機(jī)選取一個(gè)數(shù) c = c0。每個(gè)人從p0 開(kāi)始從1開(kāi)始報(bào)數(shù),。報(bào)到數(shù)c 的人出對(duì),。然后以出隊(duì)的人的秘密數(shù)字作為新的c 值。從出隊(duì)者的下一個(gè)人順時(shí)針從1 開(kāi)始再報(bào)數(shù),。直到所有的人全部出隊(duì),。

三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對(duì)各種線性表的實(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)(知識(shí)點(diǎn)):各種隊(duì)列的實(shí)現(xiàn),。

八、實(shí)驗(yàn)內(nèi)容和要求:至少用3種以上的線性表來(lái)完成此試驗(yàn),??梢栽趲ь^節(jié)點(diǎn)的和不帶頭節(jié)點(diǎn)的線性表、循環(huán)的和非循環(huán)線性表,、動(dòng)態(tài)鏈表和靜態(tài)鏈表以及向量(數(shù)組)之間選擇三種,。從空表開(kāi)始,為每個(gè)人生成一個(gè)隨機(jī)數(shù),。然后將此人加入到線性表之中,。

九、可研究與探索的問(wèn)題:給出各種實(shí)現(xiàn)的優(yōu)缺點(diǎn)比較,。

十,、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告,。給出各種線性表實(shí)現(xiàn)的優(yōu)缺點(diǎn)分析。

實(shí)驗(yàn)

二,、長(zhǎng)整數(shù)四則運(yùn)算

一,、實(shí)驗(yàn)類(lèi)別:驗(yàn)證實(shí)驗(yàn)。

二、問(wèn)題描述:計(jì)算機(jī)cpu本身可以做32位或者64位的整數(shù)四則運(yùn)算,。本試驗(yàn)要求對(duì)任意大小的整數(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,。用線性表存儲(chǔ){bk},。給出整數(shù)的四則運(yùn)算程序。

三,、實(shí)驗(yàn)?zāi)康模簩?duì)具體的問(wèn)題選擇適當(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)(知識(shí)點(diǎn)):各種隊(duì)列的實(shí)現(xiàn),。

八,、實(shí)驗(yàn)內(nèi)容和要求:至少用2種以上的線性表來(lái)完成此試驗(yàn)。比較不同線性表實(shí)現(xiàn)的速度,。

九,、可研究與探索的問(wèn)題:1)對(duì)具體問(wèn)題選擇合適的線性表實(shí)現(xiàn)。2)b 的選取問(wèn)題,???否選擇更大的基b。b的選擇所應(yīng)考慮的因素,。

十,、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告,。能夠得出用向量(數(shù)組)實(shí)現(xiàn)的線性表速度最快。

實(shí)驗(yàn)三,、八皇后問(wèn)題

一,、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn)。

二,、問(wèn)題描述:在n*n 的國(guó)際象棋棋盤(pán)上放置n個(gè)皇后,,使每個(gè)皇后不受其他皇后的攻擊。

三,、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對(duì)堆棧和遞歸程序掌握程度,。

四、實(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)(知識(shí)點(diǎn)):遞歸程序與堆棧

八,、實(shí)驗(yàn)內(nèi)容和要求: 分別用遞歸和堆棧完成此試驗(yàn)。統(tǒng)計(jì)程序運(yùn)行時(shí)間與問(wèn)題規(guī)模n 的關(guān)系,。

九,、可研究與探索的問(wèn)題:?jiǎn)栴}的復(fù)雜度。當(dāng)n 比較大時(shí),,討論提高程序運(yùn)行的方法,。

十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收,。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告。找出程序運(yùn)行速度的瓶頸,。

實(shí)驗(yàn)

四,、騎士遍歷

一、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二,、問(wèn)題描述:在國(guó)際象棋n*n的棋盤(pán)中,一匹馬從棋盤(pán)中任意一格出發(fā),,要求用n2-1步走完所有的n2個(gè)格子,。每個(gè)格子走且只走過(guò)一次。應(yīng)如何走,? 試給出算法實(shí)現(xiàn),。

三、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生對(duì)堆棧與回溯算法的掌握,。

四,、實(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)(知識(shí)點(diǎn)):堆棧與回溯

八,、實(shí)驗(yàn)內(nèi)容和要求:用堆棧完成此試驗(yàn)。統(tǒng)計(jì)程序運(yùn)行時(shí)間與問(wèn)題規(guī)模n 的關(guān)系,。

九,、可研究與探索的問(wèn)題:怎樣枚舉所有馬下一步可走的位置,。選擇下一步所走位置的策略。注意由于這個(gè)程序非常耗時(shí),,在初期程序調(diào)試時(shí)應(yīng)取較小的n,。

十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收,。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告。找出程序運(yùn)行速度的瓶頸,。給出不同選擇策略的程序運(yùn)行 速度的比較結(jié)果,。

實(shí)驗(yàn)

五、桌面計(jì)算器(表達(dá)式求值)

一,、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二、問(wèn)題描述:模仿unix系統(tǒng)下的dc命令,。輸入表達(dá)式字符串,,按回車(chē)鍵后給出表達(dá)式的值,。操作數(shù)為實(shí)數(shù),。

1)操作符有 “+”、“-”,、“*”,、“/”、“^”(乘方)

2)還可以有臨時(shí)變量,。用法如 pi = 3.1415926,,r = 3, r*pi^2 3)還可以有事先定義的函數(shù)如:“sin()”(正弦)、“cos()”(余弦),、“l(fā)og()”(對(duì)數(shù)),、“l(fā)n()”(自然對(duì)數(shù))等函數(shù)。

三,、實(shí)驗(yàn)?zāi)康模簷z查學(xué)生用堆棧解決實(shí)際問(wèn)題,。為本課程后續(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)(知識(shí)點(diǎn)):堆棧,,線性表,命令行參數(shù)的處理。

八,、實(shí)驗(yàn)內(nèi)容和要求:學(xué)生應(yīng)至少應(yīng)實(shí)現(xiàn)處理五個(gè)運(yùn)算符:“+”,、“-”、“*”,、“/”,、“^”(乘方)??梢杂靡粋€(gè)線性表來(lái)存儲(chǔ)臨時(shí)變量,。另一個(gè)線性表來(lái)存儲(chǔ)預(yù)定義的函數(shù)名。

九,、可研究與探索的問(wèn)題:查找臨時(shí)變量名的不同方法,。如哈希表,二叉樹(shù),。

十,、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告,。

實(shí)驗(yàn)

六、平衡排序二叉樹(shù)

一,、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二、問(wèn)題描述:隨機(jī)生成一組整數(shù)p0,p1,…pn-1,。將這組整數(shù)按生成的次序插入到一個(gè)平衡排序二叉樹(shù)中,。然后將p0,p1,…pn-1隨機(jī)重新排列為q0,q1,…qn-1。再按照次次序?qū)⑦@些整數(shù)從生成的平衡排序二叉樹(shù)刪除,。

三,、實(shí)驗(yàn)?zāi)康模浩胶馀判蚨鏄?shù)的插入和刪除。

四,、實(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)(知識(shí)點(diǎn)):平衡排序二叉樹(shù)的插入和刪除中的旋轉(zhuǎn),。

八,、實(shí)驗(yàn)內(nèi)容和要求:統(tǒng)計(jì)在平衡排序二叉樹(shù)的插入和刪除過(guò)程中各種旋轉(zhuǎn)的出現(xiàn)次數(shù)。

九,、可研究與探索的問(wèn)題:研究平衡排序二叉樹(shù)與一般的排序二叉樹(shù)在插入和刪除方面的性能比較,。

十,、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告,。給出在均勻的隨機(jī)分布下,平衡排序二叉樹(shù)與一般排序二叉樹(shù)的性能比較,。

實(shí)驗(yàn)

七,、多重集合的實(shí)現(xiàn)

一、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二,、問(wèn)題描述:實(shí)現(xiàn)數(shù)學(xué)上多重集合。所謂的多重集合類(lèi)似于集合,,但是一件東西可以放置多個(gè)副本,。就如一個(gè)菜籃子里面可以放兩個(gè)蘋(píng)果。

三,、實(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)(知識(shí)點(diǎn)):平衡排序二叉樹(shù)的插入和刪除、遍歷,,查找。哈希查找結(jié)構(gòu),。

八,、實(shí)驗(yàn)內(nèi)容和要求: 假設(shè)集合中包含的元素是可以排序的。將多重集合封裝成一個(gè)類(lèi),。具體的實(shí)現(xiàn)可以是中序線索化的平衡排序二叉樹(shù),,或者帶父節(jié)點(diǎn)指針的平衡排序二叉樹(shù)。多重集合的界面如下:

template

//假設(shè)類(lèi)型 t 是可以排序的 class multi_set

{

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

multi_set

mult_set

:: operator+(multi_set

const& a,,multi_set

const& b);

//返回集合a,b的差

template

multi_set

mult_set

:: operator-(multi_set

const& a,,multi_set

const& b);

//返回 a –{v}

template

multi_set

multi_set

::operator-(multi_set const& a,t const& v);

九、可研究與探索的問(wèn)題:哈希函數(shù)的選取,。比較哈希與平衡排序二叉樹(shù)的優(yōu)缺點(diǎn),、性能和速度,。

十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收,。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告。給出平衡排序二叉樹(shù)實(shí)現(xiàn)的多重集合和用哈希實(shí)現(xiàn)的多重集合的性能比較,。

實(shí)驗(yàn)

八,、圖論

一、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二,、問(wèn)題描述:實(shí)現(xiàn)圖論中的各種算法。

1)最小代價(jià)生成樹(shù)的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)算來(lái)選取不同的存儲(chǔ)結(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)(知識(shí)點(diǎn)):圖論中的各種算法及其復(fù)雜度,。根據(jù)不同的操作來(lái)決定圖的存儲(chǔ)結(jié)構(gòu),。

八、實(shí)驗(yàn)內(nèi)容和要求:至少實(shí)現(xiàn)上面五個(gè)小題目中的一個(gè),。從文件中讀入一個(gè)圖的信息,。

九、可研究與探索的問(wèn)題:高級(jí)數(shù)據(jù)結(jié)構(gòu)如堆,、并查集在圖論算法中的應(yīng)用,。

十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收,。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告。給出在均勻的隨機(jī)分布下,,平衡排序二叉樹(shù)與一般排序二叉樹(shù)的性能比較,。

實(shí)驗(yàn)

九、內(nèi)部排序性能的比較

一,、實(shí)驗(yàn)類(lèi)別:設(shè)計(jì)型實(shí)驗(yàn),。

二,、問(wèn)題描述:隨機(jī)生成一組整數(shù)p0,p1,…pn-1。對(duì)這組數(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)(知識(shí)點(diǎn)):各種內(nèi)部排序算法,。

八,、實(shí)驗(yàn)內(nèi)容和要求: 1)實(shí)現(xiàn)插入排序,選擇排序,,希爾排序,,堆排序以及快速排序。2)快速排序的多種版本,。3)對(duì)單鏈表實(shí)現(xiàn)歸并排序,。4)基數(shù)排序。

5)對(duì)小型問(wèn)題(n = 10),、中型問(wèn)題(n = 1000)以及大型問(wèn)題(n = 1百萬(wàn))分別統(tǒng)計(jì)不同排序算法的鍵值比較次數(shù),、鍵值移動(dòng)次數(shù)以及程序運(yùn)行時(shí)間。

26)排序算法的時(shí)間復(fù)雜度可以有o(n)和 o(n log n),。對(duì)相同復(fù)雜度的算法,,給出他們運(yùn)行時(shí)間與時(shí)間復(fù)雜度的比值。

九,、可研究與探索的問(wèn)題:研究快速排序算法的不同改進(jìn)方法,。自省排序算法。只需要移動(dòng)而不需要交換的快速排序方法,。

十、驗(yàn)收及實(shí)驗(yàn)報(bào)告要求:現(xiàn)場(chǎng)操作及運(yùn)行效果驗(yàn)收,。要求程序必須上機(jī)編譯通過(guò)并且正確運(yùn)行,。給出試驗(yàn)報(bào)告。給出在均勻的隨機(jī)分布下,,對(duì)大中小問(wèn)題的最快的排序算法,。

教材及主要參考文獻(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, 中國(guó)電力出版社,2003年,。

[5] 嚴(yán)蔚敏,、吳偉民,數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版),,清華大學(xué)出版社,,2006年

全文閱讀已結(jié)束,如果需要下載本文請(qǐng)點(diǎn)擊

下載此文檔
你可能感興趣的文章
a.付費(fèi)復(fù)制
付費(fèi)獲得該文章復(fù)制權(quán)限
特價(jià):5.99元 10元
微信掃碼支付
已付款請(qǐng)點(diǎn)這里
b.包月復(fù)制
付費(fèi)后30天內(nèi)不限量復(fù)制
特價(jià):9.99元 10元
微信掃碼支付
已付款請(qǐng)點(diǎn)這里 聯(lián)系客服