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