每個(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;isize;i++){
for(j=i+1;jsize;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;jsize;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_setmulti_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年