無(wú)論是身處學(xué)校還是步入社會(huì),大家都嘗試過(guò)寫(xiě)作吧,借助寫(xiě)作也可以提高我們的語(yǔ)言組織能力。范文書(shū)寫(xiě)有哪些要求呢?我們?cè)鯓硬拍軐?xiě)好一篇范文呢?以下是我為大家搜集的優(yōu)質(zhì)范文,僅供參考,一起來(lái)看看吧
數(shù)據(jù)結(jié)構(gòu)與算法論文篇一
100401200510計(jì)本(4)班章興春
本學(xué)期所學(xué)習(xí)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程已經(jīng)告一段落,就其知識(shí)點(diǎn)及其掌握情況、學(xué)習(xí)體會(huì)以及對(duì)該門(mén)課程的教學(xué)建議等方面進(jìn)行學(xué)習(xí)總結(jié)。以便在所學(xué)習(xí)知識(shí)有更深刻的認(rèn)識(shí)。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)之前、一直以為數(shù)據(jù)結(jié)構(gòu)是一門(mén)新的語(yǔ)言、后來(lái)才知道學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了更加高效的的組織數(shù)據(jù)、設(shè)計(jì)出良好的算法,而算法則是一個(gè)程序的靈魂。經(jīng)過(guò)了一學(xué)期的數(shù)據(jù)結(jié)構(gòu)了,在期末之際對(duì)其進(jìn)行總結(jié)。首先,學(xué)完數(shù)據(jù)結(jié)構(gòu)我們應(yīng)該知道數(shù)據(jù)結(jié)構(gòu)講的是什么,數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的研究的程序設(shè)計(jì)問(wèn)題中所出現(xiàn)的計(jì)算機(jī)處理對(duì)象以及它們之間關(guān)系和操作的學(xué)科。
第一章主要介紹了相關(guān)概念,如數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)類(lèi)型以及數(shù)據(jù)結(jié)構(gòu)的定義。其中,數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和運(yùn)算集合。邏輯結(jié)構(gòu)分為四類(lèi):集合型、線性、樹(shù)形和圖形結(jié)構(gòu),數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)分為:順序存儲(chǔ)、鏈接存儲(chǔ)、索引存儲(chǔ)和散列存儲(chǔ)四類(lèi)。最后著重介紹算法性能分析,包括算法的時(shí)間性能分析以及算法的空間性能分析。
第二章具體地介紹了順序表的定義、特點(diǎn)及其主要操作,如查找、插入和刪除的實(shí)現(xiàn)。需要掌握對(duì)它們的性能估計(jì)。包括查找算法的平均查找長(zhǎng)度,插入與刪除算法中的對(duì)象平均移動(dòng)次數(shù)。
鏈表中數(shù)據(jù)元素的存儲(chǔ)不一定是連續(xù)的,還可以占用任意的、不連續(xù)的物理存儲(chǔ)區(qū)域。與順序表相比,鏈表的插入、刪除不需要移動(dòng)元素,給算法的效率帶來(lái)較大的提高。鏈表這一章中介紹了鏈表的節(jié)點(diǎn)結(jié)構(gòu)、靜態(tài)與動(dòng)態(tài)鏈表的概念、鏈表的基本運(yùn)算(如求表長(zhǎng)、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環(huán)鏈表的定義、結(jié)構(gòu)、功能和基本算法。
第三章介紹了堆棧與隊(duì)列這兩種運(yùn)算受限制的線性結(jié)構(gòu)。其基本運(yùn)算方法與順序表和鏈表運(yùn)算方法基本相同,不同的是堆棧須遵循“先進(jìn)后出”的規(guī)則,對(duì)堆棧的操作只能在棧頂進(jìn)行;而隊(duì)列要遵循“先進(jìn)先出”的規(guī)則,教材中列出了兩種結(jié)構(gòu)的相應(yīng)算法,如入棧、出棧、入隊(duì)、出隊(duì)等。在介紹隊(duì)列時(shí),提出了循環(huán)隊(duì)列的概念,以避免“假溢出”的現(xiàn)象。算法上要求掌握進(jìn)棧、退棧、取棧頂元素、判??蘸兄每諚5任宸N操作及掌握使用元素個(gè)數(shù)計(jì)數(shù)器及少用一個(gè)元素空間來(lái)區(qū)分隊(duì)列空、隊(duì)列滿(mǎn)的方法。
第四章串和數(shù)組中,我們知道串是一種特殊的線性表,是由零個(gè)或多個(gè)任意字符組成的字符序列。串的儲(chǔ)存結(jié)構(gòu)分為緊縮模式和非緊縮模式。
基本運(yùn)算需掌握求串長(zhǎng)、串賦值、連接操作、求子串、串比較、串定位、串插入、串刪除、串替換等。
第五章二叉樹(shù)的知識(shí)是重點(diǎn)內(nèi)容。在介紹有關(guān)概念時(shí),提到了二叉樹(shù)的性質(zhì)以及兩種特殊的二叉樹(shù):完全二叉樹(shù)和滿(mǎn)二叉樹(shù)。接著介紹二叉樹(shù)的順序存儲(chǔ)和鏈接存儲(chǔ)以及生成算法。重點(diǎn)介紹二叉樹(shù)的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹(shù)。二叉樹(shù)的應(yīng)用:基本算法、哈弗曼樹(shù)、二叉排序樹(shù)和堆排序。
樹(shù)與二叉樹(shù)是不同的概念。教材介紹了樹(shù)和森林的概念、遍歷和存儲(chǔ)結(jié)構(gòu),還有樹(shù)、森林和二叉樹(shù)的相互關(guān)系,樹(shù)或森林怎樣轉(zhuǎn)化成二叉樹(shù),二叉樹(shù)又如何轉(zhuǎn)換為樹(shù)和森林等算法。
第六章介紹了圖的概念及其應(yīng)用,圖的存儲(chǔ)結(jié)構(gòu)的知識(shí)點(diǎn)有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷。其余知識(shí)點(diǎn)有:有向圖、連通圖、生成樹(shù)和森林、最短路徑問(wèn)題和有向無(wú)環(huán)圖及其應(yīng)用。有向無(wú)環(huán)圖重點(diǎn)理解aov網(wǎng)和拓?fù)渑判蚣捌渌惴ā?/p>
最后兩章集體說(shuō)明了查找和排序算法,查找教材上介紹了靜態(tài)查找表和哈希查找表,靜態(tài)查找表中介紹了順序查找、折半查找以及分塊查找。哈希法中,學(xué)習(xí)要點(diǎn)包括哈希函數(shù)的比較;解決地址沖突的線性探查法的運(yùn)用,平均探查次數(shù);解決地址沖突的二次哈希法的運(yùn)用。
排序是使用最頻繁的一類(lèi)算法,可分為內(nèi)部排序和外部排序。主要需要理解排序的基本概念,在算法上、需要掌握插入排序(包括直接插入排序算法、折半插入排序算法),交換排序(包括冒泡排序算法、快速排序遞歸算法),選擇排序(包括直接選擇排序算法、堆排序算法)等。
二、對(duì)各知識(shí)點(diǎn)的掌握情況
總體來(lái)看,對(duì)教材中的知識(shí)點(diǎn)理解較為完善,但各個(gè)章節(jié)均出現(xiàn)有個(gè)別知識(shí)點(diǎn)較為陌生的現(xiàn)象。現(xiàn)將各個(gè)章節(jié)出現(xiàn)的知識(shí)點(diǎn)理解情況列舉如下。
第一章中我對(duì)數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)的概念理解較為透徹,熟悉數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。而對(duì)算法的時(shí)間、空間性能分析較為模糊,尤其是空間性能分析需要加強(qiáng)。
第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡(jiǎn)單順序查找和二分查找,對(duì)分塊查找較為含糊;排序問(wèn)題中,由于冒泡排序在大一c語(yǔ)言課上已經(jīng)學(xué)習(xí)過(guò),再來(lái)學(xué)習(xí)感覺(jué)很輕松。對(duì)插入排序和選擇排序理解良好,但是,在實(shí)際運(yùn)用中仍然出現(xiàn)明顯不熟練的現(xiàn)象。由于在歸并排序?qū)W習(xí)中感覺(jué)較吃力,現(xiàn)在對(duì)這種排序方法仍然非常模糊,所以需要花較多的時(shí)間來(lái)補(bǔ)習(xí)。此外串的模式匹配也是較難理解的一個(gè)地方。
鏈表這一章中,除對(duì)雙向循環(huán)鏈表這一知識(shí)點(diǎn)理解困難之外,其他的知識(shí)點(diǎn)像單鏈表的建立和基本算法等都較為熟悉。
接下來(lái)的有關(guān)堆棧以及隊(duì)列的知識(shí)點(diǎn)比較少,除有關(guān)算法較為特殊以外,其余算法都是先前學(xué)過(guò)的順序表和鏈表的知識(shí),加上思想上較為重視,因此這部分內(nèi)容是我對(duì)全書(shū)掌握最好的一部分。不足之處仍然表現(xiàn)在算法的性能分析上。
在學(xué)習(xí)第六章時(shí)感覺(jué)較為吃力的部分在于矩陣的應(yīng)用上,尤其對(duì)矩陣轉(zhuǎn)置算法的c語(yǔ)言描述不太理解。稀疏矩陣相加算法中,用三元組表實(shí)現(xiàn)比較容易理解,對(duì)十字鏈表進(jìn)行矩陣相加的方法較為陌生。
第七章是全書(shū)的重點(diǎn),卻也有一些內(nèi)容沒(méi)有完全理解。在第一節(jié)基本概念中,二叉樹(shù)的性質(zhì)容易懂卻很難記憶。對(duì)二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)和遍歷算法這部分內(nèi)容掌握較好,能夠熟練運(yùn)用,而對(duì)于二叉樹(shù)應(yīng)用中的哈弗曼樹(shù)卻比較陌生。
第八章內(nèi)容較少,牽涉到所學(xué)的隊(duì)列的有關(guān)內(nèi)容,總體來(lái)說(shuō)理解上沒(méi)有什么困難,問(wèn)題依舊出現(xiàn)在算法的性能分析上。
散列結(jié)構(gòu)這一章理解比較完善的知識(shí)點(diǎn)有:基本概念和存儲(chǔ)結(jié)構(gòu)。散列函數(shù)中直接定址法和除留余數(shù)法學(xué)得比較扎實(shí),對(duì)數(shù)字分析法等方法則感覺(jué)較為陌生。對(duì)兩種沖突處理的算法思想的理解良好,問(wèn)題在于用c語(yǔ)言描述上。
最后一章,圖及其應(yīng)用中,圖的定義、基本運(yùn)算如圖的生成等起初理解有困難,但隨著學(xué)習(xí)深入,對(duì)它的概念也逐步明朗起來(lái)。鄰接矩陣、鄰接表和逆鄰接表掌握較好,而對(duì)十字鏈表和鄰接多重表則較為陌生。感覺(jué)理解較為吃力的內(nèi)容還有圖的遍歷(包括深度和廣度優(yōu)先遍歷),最小生成樹(shù)問(wèn)題也是比較陌生的知識(shí)點(diǎn)。最短路徑和aov網(wǎng)學(xué)習(xí)起來(lái)感覺(jué)比較輕松,而對(duì)于c語(yǔ)言描述卻又不大明白。
由于平時(shí)上機(jī)練習(xí)的少,對(duì)于教材中很多算法都掌握的不是很熟悉、不過(guò)這些都是可以彌補(bǔ)的,我會(huì)在剩下的時(shí)間中不斷練習(xí)書(shū)上給出的算法和練習(xí),正如教材上說(shuō)的,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),僅從書(shū)本上學(xué)習(xí)是不夠的,必須經(jīng)過(guò)大量的程序設(shè)計(jì)實(shí)踐,在實(shí)踐中體會(huì)構(gòu)造性思維方法,掌握數(shù)據(jù)組織與程序設(shè)計(jì)技術(shù)。
三、學(xué)習(xí)體會(huì):
多做實(shí)驗(yàn)!這個(gè)就沒(méi)有太多理由了,我一直覺(jué)得編程是一門(mén)熟練科學(xué),多編程,水平肯定會(huì)提高,最重要的是能夠養(yǎng)成一種感覺(jué),就是對(duì)程序?qū)λ惴ǖ拿舾?,為什么那些牛人看一個(gè)算法一下子就看懂了?而自己要看很久才能弄懂,而且弄懂了過(guò)了一陣子又忘記了?其實(shí)這個(gè)是因?yàn)榕H藗円郧翱吹某绦蚝芏?,編得也很多,所以他們有了那種感覺(jué),所以我覺(jué)得大家應(yīng)該多看程序,多寫(xiě)程序,培養(yǎng)自己的感覺(jué)。
復(fù)習(xí)和考試的技巧,我想大家應(yīng)該都有這樣的感覺(jué),就是覺(jué)得自己什么都掌握了,但是在考試的時(shí)候就是會(huì)犯暈,有時(shí)候一出考場(chǎng)就知道錯(cuò)在哪個(gè)了,然后考完以后一對(duì)答案,發(fā)現(xiàn)其實(shí)考得很簡(jiǎn)單,應(yīng)該都是自己會(huì)做的,這個(gè)就是與自己的復(fù)習(xí)和考試的技巧有關(guān)系了。
首先就是復(fù)習(xí),前面已經(jīng)說(shuō)過(guò)其實(shí)我們學(xué)的算法也就是幾十個(gè),那么我們的任務(wù)也就是理解這幾十個(gè)算法,復(fù)習(xí)也就是要加深你的理解。如何理解算法,然后理解到什么程度呢? 是能默出整個(gè)算法嗎?其實(shí)不是這樣的,數(shù)據(jù)結(jié)構(gòu)的考試有它的特點(diǎn),考過(guò)程考試了,大家應(yīng)該都發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)其實(shí)不要求你把整個(gè)算法背出來(lái),它注重考察你的理解,那么怎么考察呢?其實(shí)也就是兩種方式吧,一種就是用實(shí)例,就是給你一個(gè)例子,要你用某個(gè)算法運(yùn)行出結(jié)果,我想這個(gè)期末考試的時(shí)候仍然會(huì)有很多這樣的題目,比如排序那塊就很好出這樣的題目,要復(fù)習(xí)這種題目我覺(jué)得很簡(jiǎn)單,就是每個(gè)算法都自己用例子去實(shí)踐一下,以不變應(yīng)萬(wàn)變,我期中復(fù)習(xí)的時(shí)候就是這樣去做的,而且考試之前我就覺(jué)得那個(gè)并查集的題目就很有可能會(huì)考,于是就自己出了幾個(gè)例子,做了一下。另外一種考察方式就是算法填空和算法改錯(cuò),可能有一些同學(xué)覺(jué)得這種題目很難,其實(shí)我們首先可以確定這兩種題目肯定是與書(shū)上算法有關(guān)系的,只要理解了書(shū)上的算法就可以了,有人覺(jué)得看完書(shū)以后什么都懂了,而且要默也默得出來(lái),其實(shí)不是這樣的,算法改錯(cuò)和填空主要是考察的細(xì)微處,雖然你覺(jué)得你默得出來(lái),那是能夠默出算法的主體部分,很多細(xì)微的地方你就會(huì)很容易忽略。我想大家考過(guò)期中考以后應(yīng)該都有這種感覺(jué)吧?那要怎樣解決這種問(wèn)題呢? 我覺(jué)得有兩種方法,一種就是自己去編程實(shí)現(xiàn),這種方法比較有意義,還能夠提高編程水平,另外一種就是用實(shí)例分析算法的每句話,我認(rèn)為這種方法是最有效的。
然后還有一種題目,就是最后的寫(xiě)算法的題目,我覺(jué)得這種題目還是很好解決的,只要是能夠自己做出作業(yè)的,基本上都會(huì)很容易做出來(lái),這也是為什么我前面覺(jué)得平時(shí)做作業(yè)應(yīng)該自己獨(dú)立思考的原因,同時(shí)做這種題目千萬(wàn)要小心,尤其是題目簡(jiǎn)單的時(shí)候,那肯定會(huì)有一些小地方要考慮清楚,一不小心就會(huì)被扣掉很多分,這樣很不值。
我覺(jué)得考試的時(shí)候沒(méi)有太多要講的,只要復(fù)習(xí)好了,考試的時(shí)候細(xì)心一點(diǎn)就可以了,然后就是做一個(gè)題目開(kāi)始就要盡量保證正確,如果覺(jué)得留在那里等后面做完了再來(lái)檢查,這樣錯(cuò)誤還是很有可能檢查不出來(lái),我期中考試的時(shí)候就基本上沒(méi)有檢查,因?yàn)槲易雒總€(gè)題目都是確保正確,用的時(shí)間也挺多的,然后也覺(jué)得沒(méi)有檢查的必要了。
三、對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)的建議
1、建議在上課過(guò)程中加大隨堂練習(xí)的分量,以便學(xué)生能當(dāng)堂消化課堂上學(xué)習(xí)的知識(shí),也便于及時(shí)了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,同時(shí)有助于學(xué)生保持良好的精神狀態(tài)。
2、建議在課時(shí)允許的情況下,增加習(xí)題課的分量,通過(guò)課堂的習(xí)題講解,加深對(duì)知識(shí)點(diǎn)的掌握,同時(shí)對(duì)各知識(shí)點(diǎn)的運(yùn)用有一個(gè)更為直觀和具體的認(rèn)識(shí)。
3、要更加重視實(shí)驗(yàn)的重要性。
以上便是我對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》這門(mén)課的學(xué)習(xí)總結(jié),我會(huì)抓緊時(shí)間將沒(méi)有吃透的知識(shí)點(diǎn)補(bǔ)齊。今后我仍然會(huì)繼續(xù)學(xué)習(xí),克服學(xué)習(xí)中遇到的難關(guān),在打牢基礎(chǔ)的前提下向更深入的層面邁進(jìn)!
數(shù)據(jù)結(jié)構(gòu)與算法論文篇二
11計(jì)本一班 許雪松 1104013018
數(shù)據(jù)結(jié)構(gòu)與算法是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)科學(xué)的核心課程,而且也已經(jīng)成為其他理工專(zhuān)業(yè)的熱門(mén)選修課??偟膩?lái)說(shuō)感觸還是比較深的,剛開(kāi)始上的時(shí)候還蠻簡(jiǎn)單的,越到后面感覺(jué)越難,算法也更復(fù)雜了,有時(shí)候甚至聽(tīng)不懂,老師上課時(shí)講的也蠻快的,所以只能靠課下下功夫了。下面是我對(duì)本學(xué)期學(xué)習(xí)這門(mén)課的總結(jié)。
第一章的數(shù)據(jù)結(jié)構(gòu)和算法的引入,介紹了數(shù)據(jù)和數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、算法描述工具、算法和算法評(píng)價(jià)四個(gè)方面的知識(shí)。
第二章具體地介紹了順序表的概念、基本運(yùn)算及其應(yīng)用。基本運(yùn)算有:初始化表、求表長(zhǎng)、排序、元素的查找、插入及刪除等。元素查找方法有:簡(jiǎn)單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等。最后介紹了順序串的概念,重點(diǎn)在于串的模式匹配。
第三章主要介紹的是線性邏輯結(jié)構(gòu)的數(shù)據(jù)在鏈接存儲(chǔ)方法下數(shù)據(jù)結(jié)構(gòu)鏈表的相關(guān)知識(shí)。主要是單鏈表、循環(huán)鏈表的數(shù)據(jù)類(lèi)型結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其實(shí)現(xiàn)以及鏈表的相關(guān)應(yīng)用問(wèn)題,在此基礎(chǔ)上介紹了鏈串的相關(guān)知識(shí)。在應(yīng)用方面有多項(xiàng)式的相加問(wèn)題、歸并問(wèn)題、箱子排序問(wèn)題和鏈表在字符處理方面的應(yīng)用問(wèn)題等。本章未完全掌握的是循環(huán)鏈表的算法問(wèn)題和c的描述。
第四章介紹在兩種不同的存儲(chǔ)結(jié)構(gòu)下設(shè)計(jì)的堆棧,即順序棧和鏈棧的相關(guān)知識(shí),了解堆棧的相關(guān)應(yīng)用,掌握應(yīng)用堆棧來(lái)解決實(shí)際問(wèn)題的思想及方法。本章主要內(nèi)容是順序棧和鏈棧的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)定義和基本運(yùn)算算法及其性能分析。本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握。
第五章主要介紹順序存儲(chǔ)和鏈接存儲(chǔ)方法下的兩種隊(duì)列、順序(循環(huán))隊(duì)列和鏈隊(duì)列的數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其性能分析以及應(yīng)用。順序隊(duì)列(重點(diǎn)是循環(huán)隊(duì)列)和鏈隊(duì)列的概念、數(shù)據(jù)類(lèi)型描述、數(shù)據(jù)結(jié)構(gòu)和基本運(yùn)算算法及其性能分析等。本章同堆棧有點(diǎn)類(lèi)似,算法思想較為簡(jiǎn)單,所以能較好掌握;但難點(diǎn)重在循環(huán)隊(duì)列隊(duì)空、隊(duì)滿(mǎn)的判斷條件問(wèn)題。
第六章“特殊矩陣、廣義表及其應(yīng)用”將學(xué)習(xí)數(shù)組、稀疏矩陣和廣義表的基本概念,幾種特殊矩陣的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算,在此基礎(chǔ)上學(xué)習(xí)特殊矩陣的計(jì)算算法與廣義表應(yīng)用等相關(guān)問(wèn)題。本章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。
第七章二叉樹(shù)及其應(yīng)用。分為二叉樹(shù)的基本概念、二叉樹(shù)存儲(chǔ)結(jié)構(gòu)、二叉樹(shù)的遍歷算法、線索二叉樹(shù)、二叉樹(shù)的應(yīng)用(哈夫曼樹(shù)、二叉排序樹(shù)、堆和堆排序、基本算法)?;舅惴òǘ鏄?shù)的建立、遍歷、線索化等算法。在此基礎(chǔ)上,介紹二叉樹(shù)的一些應(yīng)用問(wèn)題,包括哈夫曼編碼問(wèn)題、(平衡)二叉排序樹(shù)問(wèn)題和堆排序問(wèn)題等。
第八章說(shuō)的是樹(shù)和森林,首先我們要知道樹(shù)與二叉樹(shù)是不同的概念。課本介紹了樹(shù)和森林的概念、遍歷和存儲(chǔ)結(jié)構(gòu),還有樹(shù)、森林和二叉樹(shù)的相互關(guān)系,樹(shù)或森林怎樣轉(zhuǎn)化成二叉樹(shù),二叉樹(shù)又如何轉(zhuǎn)換為樹(shù)和森林等算法。
第九章“散列結(jié)構(gòu)及其應(yīng)用”是邏輯結(jié)構(gòu)“集合型”的數(shù)據(jù)元素在散列存儲(chǔ)方法下的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用知識(shí)內(nèi)容。主要介紹散列函數(shù)的概念、散列結(jié)構(gòu)的概念、散列存儲(chǔ)結(jié)構(gòu)的概念---散列表、散列函數(shù)和散列表中解決沖突的處理方法---開(kāi)放定址法、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,所以掌握不太好。
第十章圖及其應(yīng)用。分為圖的概念、圖的存儲(chǔ)結(jié)構(gòu)及其基本算法、圖的遍歷及算法、有向圖的連通性和最小生成樹(shù)、圖的最小生成樹(shù)、非連通圖的生成森林算法、最短路徑、有向無(wú)環(huán)圖及其應(yīng)用。
二、對(duì)各知識(shí)點(diǎn)的掌握情況
我對(duì)各知識(shí)點(diǎn)的掌握情況總結(jié)如下:
對(duì)于第一章對(duì)數(shù)據(jù)結(jié)構(gòu)的概念理解頗深,大概是每次都要談?wù)摰桨伞?duì)算法的時(shí)間性能,空間性能基本了解。這些在后面的章節(jié)都會(huì)有運(yùn)用。第二章本章重點(diǎn)和難點(diǎn)在查找和排序問(wèn)題的算法思想上,6種排序方法的性能比較。本章未掌握的為希爾排序、快速排序、歸并排序的時(shí)間復(fù)雜度分析。第三章,對(duì)鏈表掌握還好,對(duì)其數(shù)據(jù)結(jié)構(gòu)進(jìn)行了分析,有循環(huán)鏈表,掌握的不是很好,對(duì)其中一些用法不熟練。第四章堆棧,本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握,但表達(dá)式計(jì)算問(wèn)題未掌握好的。第五章的循環(huán)隊(duì)列隊(duì)空、隊(duì)滿(mǎn)的判斷條件問(wèn)題掌握的不是很好。第六章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。第七章對(duì)二叉樹(shù)掌握較好,其概念,存儲(chǔ),遍歷有很好的掌握。就是對(duì)二叉排序樹(shù)有點(diǎn)生疏,它的生成算法不是很會(huì)。第八章樹(shù)樹(shù)與二叉樹(shù)之間的轉(zhuǎn)換,森林與二叉樹(shù)的轉(zhuǎn)換算法思想基本掌握。第九章散列的一些知識(shí),沒(méi)有深入學(xué)習(xí),大概了解了散列存儲(chǔ)結(jié)構(gòu)散列表,散列函數(shù),沖突的處理方法。第十章了解了圖的逆鄰接表的存儲(chǔ)結(jié)構(gòu),關(guān)鍵路徑求解算法未能掌握好,不能靈活運(yùn)用圖的不同數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復(fù)雜的應(yīng)用問(wèn)題。
三、學(xué)習(xí)體會(huì)
剛剛接觸這門(mén)課時(shí),看到課本中全是算法,當(dāng)時(shí)就暈了,因?yàn)槲业腸語(yǔ)言學(xué)的不好,我擔(dān)心會(huì)影響這門(mén)課的學(xué)習(xí),后來(lái)上課時(shí)老師說(shuō)學(xué)習(xí)這門(mén)課的基礎(chǔ)是c語(yǔ)言,所以我當(dāng)時(shí)就決定一定要好好補(bǔ)補(bǔ),爭(zhēng)取不被拖后腿,在學(xué)習(xí)這門(mén)課的期間,也遇到了不少問(wèn)。但是通過(guò)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法,讓我對(duì)程序有了新的認(rèn)識(shí),也有了更深的理解。同時(shí),也讓我認(rèn)識(shí)到,不管學(xué)習(xí)什么,概念是基礎(chǔ),所有的知識(shí)框架都是建立在基礎(chǔ)概念之上的,所以,第一遍看課本要將概念熟記于心,然后構(gòu)建知識(shí)框架。并且,對(duì)算法的學(xué)習(xí)是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵。在第二遍看課本的過(guò)程中,要注重對(duì)算法的掌握。對(duì)于一個(gè)算法,讀一遍可能能讀懂,但不可能完全領(lǐng)會(huì)其中的思想。掌握一個(gè)算法,并不是說(shuō)將算法背過(guò),而是掌握算法的思想。我們需要的是耐心。每看一遍就會(huì)有這一遍的收獲。讀懂算法之后,自己再默寫(xiě)算法,寫(xiě)到不會(huì)的地方,看看課本想想自己為什么沒(méi)有想到。對(duì)算法的應(yīng)用上,學(xué)習(xí)算法的目的是利用算法解決實(shí)際問(wèn)題。會(huì)寫(xiě)課本上已有的算法之后,可以借其思想進(jìn)行擴(kuò)展,逐步提高編程能力。
四、對(duì)課程教學(xué)的建議
1、課程課時(shí)較緊,課堂上的練習(xí)時(shí)間較少,講解的東西越多,頭腦有時(shí)就很混亂。
2、感覺(jué)上課時(shí)的氣氛不是很好,雖然大部分人都在聽(tīng),可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,可以是大家都非常關(guān)心的一些內(nèi)容,這樣既讓大家能在思考之余有一個(gè)放松,也能夠提高學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效率。
3、學(xué)習(xí)的積極性很重要,有時(shí)候我們花了很長(zhǎng)時(shí)間去寫(xiě)實(shí)驗(yàn)報(bào)告,也很認(rèn)真的去理解去掌握,可是最后實(shí)驗(yàn)報(bào)告可能就只得了一個(gè)c,抄的人反而得a,這樣的話很容易打擊學(xué)生的積極性,在后面的實(shí)驗(yàn)報(bào)告中沒(méi)動(dòng)力再去認(rèn)真寫(xiě)。所以希望老師能在這方面有所調(diào)整。
4、雖然講課的時(shí)間很緊,但是還是希望老師能在講述知識(shí)點(diǎn)的時(shí)候能運(yùn)用實(shí)際的調(diào)試程序來(lái)給我們講解,這樣的話能讓我們對(duì)這些內(nèi)容有更深刻的印象和理解。
數(shù)據(jù)結(jié)構(gòu)與算法論文篇三
一、課程基本信息
考試形式:半開(kāi)卷考試 講課對(duì)象:計(jì)算機(jī)本科
建議教材:《數(shù)據(jù)結(jié)構(gòu)》(c語(yǔ)言版)陳明 編著 清華大學(xué)出版社
課程簡(jiǎn)介:數(shù)據(jù)結(jié)構(gòu)課程介紹如何組織各種數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)、傳遞和轉(zhuǎn)換。內(nèi)容包括:數(shù)組、鏈接表、棧和隊(duì)列、串、樹(shù)與森林、圖、排序、查找、索引與散列結(jié)構(gòu)等。課程以結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言c語(yǔ)言作為算法的描述工具,強(qiáng)化數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和結(jié)構(gòu)化程序設(shè)計(jì)基本能力的雙基訓(xùn)練。為后續(xù)計(jì)算機(jī)專(zhuān)業(yè)課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
二、課程的教學(xué)目標(biāo)
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的一門(mén)重要專(zhuān)業(yè)基礎(chǔ)課,是計(jì)算機(jī)學(xué)科的公認(rèn)主干課。課程內(nèi)容由數(shù)據(jù)結(jié)構(gòu)和算法分析初步兩部分組成。
數(shù)據(jù)結(jié)構(gòu)是針對(duì)處理大量非數(shù)值性程序問(wèn)題而形成的一門(mén)學(xué)科,內(nèi)涵豐富、應(yīng)用范圍廣。它既有完整的學(xué)科體系和學(xué)科深度,又有較強(qiáng)的實(shí)踐性。通過(guò)課程的學(xué)習(xí),應(yīng)使學(xué)生理解和掌握各種數(shù)據(jù)結(jié)構(gòu)(物理結(jié)構(gòu)和邏輯結(jié)構(gòu))的概念及其有關(guān)的算法;熟悉并了解目前常用數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)諸多領(lǐng)域中的基本應(yīng)用。
算法分析強(qiáng)調(diào)最基本的算法設(shè)計(jì)技術(shù)和分析方法。要求學(xué)生從算法和數(shù)據(jù)結(jié)構(gòu)的相互依存關(guān)系中把握應(yīng)用算法設(shè)計(jì)的藝術(shù)和技能。
經(jīng)過(guò)上機(jī)實(shí)習(xí)和課程設(shè)計(jì)的訓(xùn)練,使學(xué)生能夠編制、調(diào)試具有一定難度的中型程序;以培養(yǎng)良好的軟件工程習(xí)慣和面向?qū)ο蟮能浖季S方法。
“數(shù)據(jù)結(jié)構(gòu)”的前序課是《離散數(shù)學(xué)》、《c語(yǔ)言程序設(shè)計(jì)與算法初步》。
三、理論教學(xué)內(nèi)容的基本要求及學(xué)時(shí)分配
1、序論(2學(xué)時(shí))學(xué)習(xí)目標(biāo):熟悉各類(lèi)文件的特點(diǎn),構(gòu)造方法以及如何實(shí)現(xiàn)檢索,插入和刪除等操作。
重點(diǎn)與難點(diǎn):本章無(wú)。
知識(shí)點(diǎn):數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類(lèi)型、抽象數(shù)據(jù)類(lèi)型、算法及其設(shè)計(jì)原則、時(shí)間復(fù)雜度、空間復(fù)雜度。
2、線性表(4學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(4)結(jié)合線性表類(lèi)型的定義增強(qiáng)對(duì)抽象數(shù)據(jù)類(lèi)型的理解。
重點(diǎn)與難點(diǎn):鏈表是本章的重點(diǎn)和難點(diǎn)。扎實(shí)的指針操作和內(nèi)存動(dòng)態(tài)分配的編程技術(shù)是學(xué)好本章的基本要求,分清鏈表中指針 p 和結(jié)點(diǎn) *p 之間的對(duì)應(yīng)關(guān)系,區(qū)分鏈表中的頭結(jié)點(diǎn)、頭指針和首元結(jié)點(diǎn)的不同所指以及循環(huán)鏈表、雙向鏈表的特點(diǎn)等。
知識(shí)點(diǎn):線性表、順序表、鏈表、有序表。
3、棧和隊(duì)列(4學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(2)熟練掌握棧類(lèi)型的兩種實(shí)現(xiàn)方法;
(3)熟練掌握循環(huán)隊(duì)列和鏈隊(duì)列的基本操作實(shí)現(xiàn)算法;(4)理解遞歸算法執(zhí)行過(guò)程中棧的狀態(tài)變化過(guò)程。
重點(diǎn)與難點(diǎn):棧和隊(duì)列是在程序設(shè)計(jì)中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),因此本章的學(xué)習(xí)重點(diǎn)在于掌握這兩種結(jié)構(gòu)的特點(diǎn),以便能在應(yīng)用問(wèn)題中正確使用。
知識(shí)點(diǎn):順序棧、鏈棧、循環(huán)隊(duì)列、鏈隊(duì)列。
4、串(2學(xué)時(shí))
(2)理解串類(lèi)型的各種存儲(chǔ)表示方法;(3)理解串匹配的各種算法。
重點(diǎn)和難點(diǎn):相對(duì)于其它各個(gè)知識(shí)點(diǎn)而言,本章非整個(gè)課程的重點(diǎn),鑒于串已是多數(shù)高級(jí)語(yǔ)言中已經(jīng)實(shí)現(xiàn)的數(shù)據(jù)類(lèi)型,因此本章重點(diǎn)僅在于了解串類(lèi)型定義中各基本操作的定義以及串的實(shí)現(xiàn)方法,并學(xué)會(huì)利用這些基本操作來(lái)實(shí)現(xiàn)串的其它操作。本章的難點(diǎn)是理解實(shí)現(xiàn)串匹配的kmp算法的思想。
知識(shí)點(diǎn):串的類(lèi)型定義、串的存儲(chǔ)表示、串匹配、kmp算法。
5、數(shù)組和廣義表(4學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(2)掌握特殊矩陣的存儲(chǔ)壓縮表示方法;
(3)理解稀疏矩陣的兩類(lèi)存儲(chǔ)壓縮方法的特點(diǎn)及其適用范圍,領(lǐng)會(huì)以三元組表示稀疏矩陣時(shí)進(jìn)行矩陣運(yùn)算所采用的處理方法。
重點(diǎn)和難點(diǎn):本章重點(diǎn)是學(xué)習(xí)數(shù)組類(lèi)型的定義及其存儲(chǔ)表示。
知識(shí)點(diǎn):數(shù)組的類(lèi)型定義、數(shù)組的存儲(chǔ)表示、特殊矩陣的壓縮存儲(chǔ)表示方法、隨機(jī)稀疏矩陣的壓縮存儲(chǔ)表示方法。
6、樹(shù)和二叉樹(shù)(8學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(7)了解最優(yōu)樹(shù)的特性,掌握建立最優(yōu)樹(shù)和赫夫曼編碼的方法。
重點(diǎn)和難點(diǎn):二叉樹(shù)和樹(shù)的遍歷及其應(yīng)用是本章的學(xué)習(xí)重點(diǎn),而編寫(xiě)實(shí)現(xiàn)二叉樹(shù)和樹(shù)的各種操作的遞歸算法也恰是本章的難點(diǎn)所在。
知識(shí)點(diǎn):樹(shù)的類(lèi)型定義、二叉樹(shù)的類(lèi)型定義、二叉樹(shù)的存儲(chǔ)表示、二叉樹(shù)的遍歷以及其它操作的實(shí)現(xiàn)、線索二叉樹(shù)、樹(shù)和森林的存儲(chǔ)表示、樹(shù)和森林的遍歷以及其它操作的實(shí)現(xiàn)、最優(yōu)樹(shù)和赫夫曼編碼。
7、圖(8學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(1)領(lǐng)會(huì)圖的類(lèi)型定義;
(3)熟練掌握?qǐng)D的兩種遍歷算法;(4)理解各種圖的應(yīng)用問(wèn)題的算法。
重點(diǎn)和難點(diǎn):圖的應(yīng)用極為廣泛,而且圖的各種應(yīng)用問(wèn)題的算法都比較經(jīng)典,因此本章重點(diǎn)在于理解各種圖的算法及其應(yīng)用場(chǎng)合。
知識(shí)點(diǎn):圖的類(lèi)型定義、圖的存儲(chǔ)表示、圖的深度優(yōu)先搜索遍歷和圖的廣度優(yōu)先搜索遍歷、無(wú)向網(wǎng)的最小生成樹(shù)、最短路徑、拓?fù)渑判颉㈥P(guān)鍵路徑。
8、查找(6學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(7)掌握描述查找過(guò)程的判定樹(shù)的構(gòu)造方法,以及按定義計(jì)算各種查找方法在等概率情況下查找成功時(shí)的平均查找長(zhǎng)度。
重點(diǎn)和難點(diǎn):本章重點(diǎn)在于理解查找表的結(jié)構(gòu)特點(diǎn)及其各種表示方法的特點(diǎn)和適用場(chǎng)合。
知識(shí)點(diǎn):順序表、有序表、索引順序表、靜態(tài)查找樹(shù)、二叉查找樹(shù)、二叉平衡樹(shù)、哈希表。
9、內(nèi)部排序(6學(xué)時(shí))
學(xué)習(xí)目標(biāo):
(3)理解排序方法“穩(wěn)定”或“不穩(wěn)定”的含義,弄清楚在什么情況下要求應(yīng)用的排序方法必須是穩(wěn)定的。
重點(diǎn)和難點(diǎn):希爾排序、快速排序、堆排序和歸并排序等高效方法是本章的學(xué)習(xí)重點(diǎn)和難點(diǎn)。
知識(shí)點(diǎn):排序、直接插入排序、折半插入排序、表插入排序、希爾排序、起泡排序、快速排序、簡(jiǎn)單選擇排序、堆排序、2-路歸并排序、基數(shù)排序、排序方法的綜合比較。
10、文件(4學(xué)時(shí))
學(xué)習(xí)目標(biāo):熟悉各類(lèi)文件的特點(diǎn),構(gòu)造方法以及如何實(shí)現(xiàn)檢索,插入和刪除等操作。
重點(diǎn)和難點(diǎn):本章重點(diǎn)在于了解各種文件的結(jié)構(gòu)特點(diǎn)及其適用場(chǎng)合。知識(shí)點(diǎn):順序文件、索引文件、b-樹(shù)、b+樹(shù)、索引順序文件、vsam文件、散列文件、多關(guān)鍵字文件。
四、實(shí)驗(yàn)教學(xué)內(nèi)容的基本要求及學(xué)時(shí)分配
1、線性表(1學(xué)時(shí))實(shí)驗(yàn)一 順序表的應(yīng)用 實(shí)驗(yàn)二 鏈表的應(yīng)用
要求:理解線性表的定義及其運(yùn)算;理解順序表和鏈表的定義,組織形式,結(jié)構(gòu)特征和類(lèi)型說(shuō)明;掌握在這兩種表上實(shí)現(xiàn)的插入,刪除和按值查找的算法;了解循環(huán)鏈表,雙(循環(huán))鏈表的結(jié)構(gòu)特點(diǎn)和在其上施加的插入,刪除等操作。
2、棧(0.5學(xué)時(shí))實(shí)驗(yàn)三 棧的應(yīng)用
要求:理解棧的定義,特征及在其上所定義的基本運(yùn)算;掌握在兩種存儲(chǔ)結(jié)構(gòu)上對(duì)棧所施加的基本運(yùn)算的實(shí)現(xiàn)。
3、隊(duì)列(0.5學(xué)時(shí))實(shí)驗(yàn)四 隊(duì)列的應(yīng)用
要求:理解隊(duì)列的定義,特征及在其上所定義的基本運(yùn)算;掌握在兩種存儲(chǔ)結(jié)構(gòu)上對(duì)隊(duì)列所施加的基本運(yùn)算的實(shí)現(xiàn)。
4、串(0.5學(xué)時(shí))實(shí)驗(yàn)五 串的應(yīng)用
要求:了解串的定義;理解和領(lǐng)會(huì)串的存儲(chǔ)方式;掌握常用的串運(yùn)算。
5、數(shù)組和廣義表(0.5學(xué)時(shí))實(shí)驗(yàn)六 稀疏矩陣的應(yīng)用
要求:理解多維數(shù)組的結(jié)構(gòu)特點(diǎn)和在內(nèi)存中的兩種順序存儲(chǔ)方式;理解并掌握矩陣和特殊矩陣元素在存儲(chǔ)區(qū)中地址的計(jì)算;領(lǐng)會(huì)稀疏矩陣的壓縮方式和簡(jiǎn)單運(yùn)算;了解廣義表的定義和基本運(yùn)算。
6、樹(shù)與二叉樹(shù)(4學(xué)時(shí))實(shí)驗(yàn)七 樹(shù)與二叉樹(shù)的應(yīng)用
要求:理解樹(shù)的定義,術(shù)語(yǔ);領(lǐng)會(huì)并掌握樹(shù)的各種存儲(chǔ)結(jié)構(gòu);熟練掌握森林與二叉樹(shù)間的相互轉(zhuǎn)換;領(lǐng)會(huì)樹(shù)和森林的遍歷;了解樹(shù)的簡(jiǎn)單應(yīng)用。深刻理解二叉樹(shù)的定義,性質(zhì)及其存儲(chǔ)方法;熟練掌握二叉樹(shù)的二叉鏈表存儲(chǔ)方式,結(jié)點(diǎn)結(jié)構(gòu)和類(lèi)型定義;理解并掌握二叉樹(shù)的三種遍歷算法;掌握二叉樹(shù)的線索化方法;靈活運(yùn)用二叉樹(shù)的遍歷方法解決相關(guān)的應(yīng)用問(wèn)題。
7、圖(3學(xué)時(shí))實(shí)驗(yàn)八 圖的應(yīng)用
要求:理解圖的基本概念及術(shù)語(yǔ);掌握?qǐng)D的兩種存儲(chǔ)結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法;熟練掌握?qǐng)D的兩種遍歷(深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷)的算法思想,步驟,并能列出在兩種存儲(chǔ)結(jié)構(gòu)上按上述兩種遍歷算法得到的序列;理解最小生成樹(shù)的概念,能按prim算法構(gòu)造最小生成樹(shù);領(lǐng)會(huì)并掌握拓?fù)渑判?,關(guān)鍵路徑,最短路徑的算法思想。
8、查找(3學(xué)時(shí))實(shí)驗(yàn)九 順序查找 實(shí)驗(yàn)十 折半查找 實(shí)驗(yàn)十一 哈希表的應(yīng)用 實(shí)驗(yàn)十二 二叉排序樹(shù)的綜合練習(xí)要求:了解查找的基本思想及查找成功和不成功的概念;掌握在順序表,有序表,索引表,散列表等上的查找方法和算法,并能求出相應(yīng)的平均查找長(zhǎng)度;理解并掌握二叉排序樹(shù),平衡二叉樹(shù)b-樹(shù)的各種算法。
要求:領(lǐng)會(huì)排序的基本思想和基本概念;理解并掌握插入排序,冒泡排序,快速排序,直接選擇排序,堆排序,歸并排序和基數(shù)排序的基本思想,步驟,算法及時(shí)空效率分析;了解外排序的定義和基本方法。
五、大綱說(shuō)明
1、課堂講述的論題只是核心或有特色的知識(shí)內(nèi)容,還有相當(dāng)數(shù)量的篇章內(nèi)容留給學(xué)生自學(xué),所確定的自學(xué)部分內(nèi)容亦屬考查范圍。
2、“數(shù)據(jù)結(jié)構(gòu)”課注重上機(jī)訓(xùn)練,所有作業(yè)都必須配有規(guī)范的文檔。上機(jī)訓(xùn)練由平時(shí)的上機(jī)訓(xùn)練和小學(xué)期的實(shí)訓(xùn)課程設(shè)計(jì)兩部分組成。
3、課內(nèi)學(xué)時(shí)安排說(shuō)明:前8周每周4學(xué)時(shí)全為理論課,從第9周開(kāi)始理論和上機(jī)為1:1,也即2學(xué)時(shí)理論,2學(xué)時(shí)上機(jī)訓(xùn)練。
4、本課強(qiáng)調(diào)能力的培養(yǎng),期末采用半開(kāi)卷考試(允許同學(xué)攜帶一頁(yè)a4紙的總結(jié)資料)。本課成績(jī)由平時(shí)作業(yè)、上機(jī)成績(jī)(30%)和期末考試(70%)合成得到,有獨(dú)到見(jiàn)解的作業(yè)予以適當(dāng)加分。
5、主要參考書(shū):
[3]《數(shù)據(jù)結(jié)構(gòu)習(xí)題集(c語(yǔ)言版)》嚴(yán)蔚敏 編著 清華大學(xué)出版社
[4]《數(shù)據(jù)結(jié)構(gòu)習(xí)題解析與實(shí)訓(xùn)》張世和 編著 清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)與算法論文篇四
學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)
課程名稱(chēng):
學(xué)生學(xué)號(hào):
所屬院部:
(理工類(lèi))
學(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)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)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、選做題
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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è)稱(chēng)正讀和反讀都相同的字符序列為”回文”,試寫(xiě)一個(gè)算法判別讀入的一個(gè)以’@’為結(jié)束符的字符序列是否是“回文”。
2、選做題
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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的末尾。
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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ù)的二叉鏈表。
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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、選做題
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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í)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
實(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è)試。
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))
數(shù)據(jù)結(jié)構(gòu)與算法論文篇五
算法與數(shù)據(jù)結(jié)構(gòu)這一門(mén)課程,就是描述了數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),以及數(shù)據(jù)的運(yùn)算集合在計(jì)算機(jī)中的運(yùn)用和體現(xiàn)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)與數(shù)據(jù)之間的邏輯結(jié)構(gòu);數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)就包含了順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)和散列存儲(chǔ)。在這學(xué)期當(dāng)中,老師給我們主要講了順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。最后數(shù)據(jù)的運(yùn)算集合就是對(duì)于一批數(shù)據(jù),數(shù)據(jù)的運(yùn)算是定義在數(shù)據(jù)的邏輯結(jié)構(gòu)之上的,而運(yùn)算的具體實(shí)現(xiàn)依賴(lài)于數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。
通過(guò)這學(xué)期的學(xué)習(xí),讓我在去年c語(yǔ)言的基礎(chǔ)上對(duì)數(shù)據(jù)與數(shù)據(jù)之間的邏輯關(guān)系有了更深的理解和認(rèn)識(shí)。以前在學(xué)matlab這一課程的時(shí)候,我們?nèi)绻獙?shí)現(xiàn)兩個(gè)數(shù)的加減乘除,或者一系列復(fù)雜的數(shù)據(jù)運(yùn)算,就直接的調(diào)用函數(shù)就行,套用規(guī)則符號(hào)和運(yùn)算格式,就能立馬知道結(jié)果。在學(xué)習(xí)c語(yǔ)言這一課程時(shí),我們逐漸開(kāi)始了解函數(shù)的調(diào)用的原理,利用子函數(shù)中包含的運(yùn)算規(guī)則,從而實(shí)現(xiàn)函數(shù)的功能?,F(xiàn)今學(xué)習(xí)了算法,讓我更深層次的知道了通過(guò)順序表、指針、遞歸,能讓數(shù)據(jù)算法的實(shí)現(xiàn)更加的簡(jiǎn)潔,明了,更易于理解。摒棄了數(shù)據(jù)的冗雜性。
在本書(shū)第二章中,主要介紹了順序表的實(shí)現(xiàn)以及運(yùn)用。順序表中我認(rèn)為最重要的是一個(gè)實(shí)型數(shù)組,和順序表的表長(zhǎng),不論是在一個(gè)數(shù)據(jù)的倒置、插入、刪除以及數(shù)據(jù)的排序過(guò)程中,都能將數(shù)據(jù)依次存入數(shù)組當(dāng)中,利用數(shù)組下標(biāo)之間的關(guān)系,就能實(shí)現(xiàn)數(shù)據(jù)的一系列操作了。在存儲(chǔ)棧中,給我留下最深刻的映像就是“先進(jìn)后出”,由于它特殊的存儲(chǔ)特性,所以在括號(hào)的匹配,算術(shù)表達(dá)式中被大量應(yīng)用。在存儲(chǔ)隊(duì)列之中,數(shù)據(jù)的刪除和存儲(chǔ)分別在表的兩端進(jìn)行操作,所以存儲(chǔ)數(shù)據(jù)很方便。為節(jié)省隊(duì)列浪費(fèi)閑置空間的這一大缺點(diǎn),所以引入了循環(huán)隊(duì)列這一概念,很好用。
在第三章中,主要講的是鏈?zhǔn)酱鎯?chǔ)特性。它最突出的優(yōu)點(diǎn)就是可以選擇連續(xù)或者不連續(xù)的存儲(chǔ)空間都行。所以,不管是數(shù)據(jù)在插入或者刪除一個(gè)數(shù)據(jù)時(shí),會(huì)很方便,不會(huì)像順序表那樣,要移動(dòng)數(shù)組中的諸多元素。所以鏈表利用指針能很方便的進(jìn)行刪除或者插入操作。而鏈?zhǔn)皆跅:完?duì)列的基礎(chǔ)上,也有了多方面的應(yīng)用,所以在這些方面有了更多的應(yīng)用。
第四章字符串中,基本的數(shù)組內(nèi)部元素的排序和字符串的匹配大部分代碼自己還是能夠理解,能夠看懂,如果真的要將所學(xué)的大量運(yùn)用于實(shí)踐的話,那就要多花些功夫和時(shí)間了。在對(duì)稱(chēng)矩陣的壓縮,三角矩陣的壓縮,稀疏矩陣在存儲(chǔ)中能夠合理的進(jìn)行,能大大提高空間的開(kāi)支。
在第五章遞歸當(dāng)中,就是在函數(shù)的定義之中出現(xiàn)了自己本身的調(diào)用,稱(chēng)之為遞歸。而遞歸設(shè)計(jì)出來(lái)的程序,具有結(jié)構(gòu)清晰,可讀性強(qiáng),便于理解等優(yōu)點(diǎn)。但是由于遞歸在執(zhí)行的過(guò)程中,伴隨著函數(shù)自身的多次調(diào)用,因而執(zhí)行效率較低。如果要在追求執(zhí)行效率的情況下,往往采用非遞歸方式實(shí)現(xiàn)問(wèn)題的算法程序。
在第六章數(shù)型結(jié)構(gòu)當(dāng)中,這是區(qū)別于線性結(jié)構(gòu)的另一大類(lèi)數(shù)據(jù)結(jié)構(gòu),它具有分支性和層次性。它是數(shù)據(jù)表示,信息組織和程序設(shè)計(jì)的基礎(chǔ)和工具。在本章中,映像深刻的是樹(shù)的存儲(chǔ)結(jié)構(gòu)。有雙親表示法,孩子表示法,以及孩子兄弟表示法。在表示怎樣存儲(chǔ)數(shù)據(jù)之后,接著要從數(shù)型結(jié)構(gòu)中將數(shù)據(jù)讀取出來(lái),于是,有了樹(shù)的遍歷,在遍歷當(dāng)中,又分為前序、中序和后序遍歷,這三種遍歷各有各的特點(diǎn)。
在第七章中,說(shuō)到了樹(shù)的擴(kuò)展---二叉樹(shù)。二叉樹(shù)不同一般的樹(shù)型結(jié)構(gòu)的另一種重要的非線性結(jié)構(gòu),它是處理兩種不同的數(shù)據(jù)結(jié)構(gòu),許多涉及樹(shù)的算法采用二叉樹(shù)表示和處理更加便捷和方便。其他的也是和一般的二叉樹(shù)差不多。還多了一個(gè)樹(shù)、森林和二叉樹(shù)之間的轉(zhuǎn)換。
第八章的圍繞著圖來(lái)展開(kāi),它是一種復(fù)雜的非線性結(jié)構(gòu),在人工智能、網(wǎng)絡(luò)工程、數(shù)學(xué)、并行計(jì)算和工業(yè)設(shè)計(jì)有著廣泛的應(yīng)用。圖最重要的由一個(gè)非空的頂點(diǎn)集合和一個(gè)描述頂點(diǎn)之間的多對(duì)多關(guān)系的邊集合組成的一種數(shù)據(jù)結(jié)構(gòu)。圖的存儲(chǔ)室通過(guò)鄰接矩陣?yán)洗鎯?chǔ)圖的信息。而圖的讀取是通過(guò)深度優(yōu)先遍歷和廣度優(yōu)先遍歷實(shí)現(xiàn)。生成最小生成樹(shù)有prim算法和kruskal算法,相對(duì)于這兩種算法,后一種算法要更加易于理解。
在考試的時(shí)候,我以為老師只會(huì)出題作業(yè)部分。然后書(shū)中有一小部分就沒(méi)看,但是題中出現(xiàn)了一個(gè)二叉樹(shù)轉(zhuǎn)換為森林的時(shí)候,我有印象,但就是沒(méi)思路想法了,就沒(méi)做。從中我真的理解了老師說(shuō)的,考試不代表學(xué)習(xí)的結(jié)束?;蛘吣悻F(xiàn)在看的內(nèi)容在生活中學(xué)習(xí)中暫時(shí)沒(méi)有太大的作用,但是到了某一特定的環(huán)境條件下,總會(huì)有作用。所以,學(xué)習(xí)是一個(gè)積累的過(guò)程,不懈怠,踏實(shí)的走下去,你才會(huì)有所收獲。
【本文地址:http://mlvmservice.com/zuowen/3446752.html】