無論是身處學校還是步入社會,大家都嘗試過寫作吧,借助寫作也可以提高我們的語言組織能力。范文書寫有哪些要求呢?我們怎樣才能寫好一篇范文呢?接下來小編就給大家介紹一下優秀的范文該怎么寫,我們一起來看一看吧。
數據結構與算法論文篇一
一、課程基本信息
課程名稱:數據結構
考試形式:半開卷考試 講課對象:計算機本科
建議教材:《數據結構》(c語言版)陳明 編著 清華大學出版社
課程簡介:數據結構課程介紹如何組織各種數據在計算機中的存儲、傳遞和轉換。內容包括:數組、鏈接表、棧和隊列、串、樹與森林、圖、排序、查找、索引與散列結構等。課程以結構化程序設計語言c語言作為算法的描述工具,強化數據結構基本知識和結構化程序設計基本能力的雙基訓練。為后續計算機專業課程的學習打下堅實的基礎。
二、課程的教學目標
“數據結構”是計算機相關專業的一門重要專業基礎課,是計算機學科的公認主干課。課程內容由數據結構和算法分析初步兩部分組成。
數據結構是針對處理大量非數值性程序問題而形成的一門學科,內涵豐富、應用范圍廣。它既有完整的學科體系和學科深度,又有較強的實踐性。通過課程的學習,應使學生理解和掌握各種數據結構(物理結構和邏輯結構)的概念及其有關的算法;熟悉并了解目前常用數據結構在計算機諸多領域中的基本應用。
算法分析強調最基本的算法設計技術和分析方法。要求學生從算法和數據結構的相互依存關系中把握應用算法設計的藝術和技能。
經過上機實習和課程設計的訓練,使學生能夠編制、調試具有一定難度的中型程序;以培養良好的軟件工程習慣和面向對象的軟件思維方法。
“數據結構”的前序課是《離散數學》、《c語言程序設計與算法初步》。
三、理論教學內容的基本要求及學時分配
1、序論(2學時)學習目標:熟悉各類文件的特點,構造方法以及如何實現檢索,插入和刪除等操作。
重點與難點:本章無。
知識點:數據、數據元素、數據結構、數據類型、抽象數據類型、算法及其設計原則、時間復雜度、空間復雜度。
2、線性表(4學時)
學習目標:
(4)結合線性表類型的定義增強對抽象數據類型的理解。
重點與難點:鏈表是本章的重點和難點。扎實的指針操作和內存動態分配的編程技術是學好本章的基本要求,分清鏈表中指針 p 和結點 *p 之間的對應關系,區分鏈表中的頭結點、頭指針和首元結點的不同所指以及循環鏈表、雙向鏈表的特點等。
知識點:線性表、順序表、鏈表、有序表。
3、棧和隊列(4學時)
學習目標:
(1)掌握棧和隊列這兩種抽象數據類型的特點,并能在相應的應用問題中正確選用它們;
(2)熟練掌握棧類型的兩種實現方法;
(3)熟練掌握循環隊列和鏈隊列的基本操作實現算法;(4)理解遞歸算法執行過程中棧的狀態變化過程。
重點與難點:棧和隊列是在程序設計中被廣泛使用的兩種線性數據結構,因此本章的學習重點在于掌握這兩種結構的特點,以便能在應用問題中正確使用。
知識點:順序棧、鏈棧、循環隊列、鏈隊列。
4、串(2學時)
(2)理解串類型的各種存儲表示方法;(3)理解串匹配的各種算法。
重點和難點:相對于其它各個知識點而言,本章非整個課程的重點,鑒于串已是多數高級語言中已經實現的數據類型,因此本章重點僅在于了解串類型定義中各基本操作的定義以及串的實現方法,并學會利用這些基本操作來實現串的其它操作。本章的難點是理解實現串匹配的kmp算法的思想。
知識點:串的類型定義、串的存儲表示、串匹配、kmp算法。
5、數組和廣義表(4學時)
學習目標:
(2)掌握特殊矩陣的存儲壓縮表示方法;
(3)理解稀疏矩陣的兩類存儲壓縮方法的特點及其適用范圍,領會以三元組表示稀疏矩陣時進行矩陣運算所采用的處理方法。
重點和難點:本章重點是學習數組類型的定義及其存儲表示。
知識點:數組的類型定義、數組的存儲表示、特殊矩陣的壓縮存儲表示方法、隨機稀疏矩陣的壓縮存儲表示方法。
6、樹和二叉樹(8學時)
學習目標:
(3)熟練掌握二叉樹的各種遍歷算法,并能靈活運用遍歷算法實現二叉樹的其它操作;
(4)理解二叉樹的線索化過程以及在中序線索化樹上找給定結點的前驅和后繼的方法;
(7)了解最優樹的特性,掌握建立最優樹和赫夫曼編碼的方法。
重點和難點:二叉樹和樹的遍歷及其應用是本章的學習重點,而編寫實現二叉樹和樹的各種操作的遞歸算法也恰是本章的難點所在。
知識點:樹的類型定義、二叉樹的類型定義、二叉樹的存儲表示、二叉樹的遍歷以及其它操作的實現、線索二叉樹、樹和森林的存儲表示、樹和森林的遍歷以及其它操作的實現、最優樹和赫夫曼編碼。
7、圖(8學時)
學習目標:
(1)領會圖的類型定義;
(2)熟悉圖的各種存儲結構及其構造算法,了解各種存儲結構的特點及其選用原則;
(3)熟練掌握圖的兩種遍歷算法;(4)理解各種圖的應用問題的算法。
重點和難點:圖的應用極為廣泛,而且圖的各種應用問題的算法都比較經典,因此本章重點在于理解各種圖的算法及其應用場合。
知識點:圖的類型定義、圖的存儲表示、圖的深度優先搜索遍歷和圖的廣度優先搜索遍歷、無向網的最小生成樹、最短路徑、拓撲排序、關鍵路徑。
8、查找(6學時)
學習目標:
(3)熟悉靜態查找樹的構造方法和查找算法,理解靜態查找樹和折半查找的關系;
(4)熟練掌握二叉查找樹的構造和查找方法;(5)理解二叉平衡樹的構造過程;
(6)熟練掌握哈希表的構造方法,深刻理解哈希表與其它結構的表的實質性的差別;
(7)掌握描述查找過程的判定樹的構造方法,以及按定義計算各種查找方法在等概率情況下查找成功時的平均查找長度。
重點和難點:本章重點在于理解查找表的結構特點及其各種表示方法的特點和適用場合。
知識點:順序表、有序表、索引順序表、靜態查找樹、二叉查找樹、二叉平衡樹、哈希表。
9、內部排序(6學時)
學習目標:
(3)理解排序方法“穩定”或“不穩定”的含義,弄清楚在什么情況下要求應用的排序方法必須是穩定的。
重點和難點:希爾排序、快速排序、堆排序和歸并排序等高效方法是本章的學習重點和難點。
知識點:排序、直接插入排序、折半插入排序、表插入排序、希爾排序、起泡排序、快速排序、簡單選擇排序、堆排序、2-路歸并排序、基數排序、排序方法的綜合比較。
10、文件(4學時)
學習目標:熟悉各類文件的特點,構造方法以及如何實現檢索,插入和刪除等操作。
重點和難點:本章重點在于了解各種文件的結構特點及其適用場合。知識點:順序文件、索引文件、b-樹、b+樹、索引順序文件、vsam文件、散列文件、多關鍵字文件。
四、實驗教學內容的基本要求及學時分配
1、線性表(1學時)實驗一 順序表的應用 實驗二 鏈表的應用
要求:理解線性表的定義及其運算;理解順序表和鏈表的定義,組織形式,結構特征和類型說明;掌握在這兩種表上實現的插入,刪除和按值查找的算法;了解循環鏈表,雙(循環)鏈表的結構特點和在其上施加的插入,刪除等操作。
2、棧(0.5學時)實驗三 棧的應用
要求:理解棧的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結構上對棧所施加的基本運算的實現。
3、隊列(0.5學時)實驗四 隊列的應用
要求:理解隊列的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結構上對隊列所施加的基本運算的實現。
4、串(0.5學時)實驗五 串的應用
要求:了解串的定義;理解和領會串的存儲方式;掌握常用的串運算。
5、數組和廣義表(0.5學時)實驗六 稀疏矩陣的應用
要求:理解多維數組的結構特點和在內存中的兩種順序存儲方式;理解并掌握矩陣和特殊矩陣元素在存儲區中地址的計算;領會稀疏矩陣的壓縮方式和簡單運算;了解廣義表的定義和基本運算。
6、樹與二叉樹(4學時)實驗七 樹與二叉樹的應用
要求:理解樹的定義,術語;領會并掌握樹的各種存儲結構;熟練掌握森林與二叉樹間的相互轉換;領會樹和森林的遍歷;了解樹的簡單應用。深刻理解二叉樹的定義,性質及其存儲方法;熟練掌握二叉樹的二叉鏈表存儲方式,結點結構和類型定義;理解并掌握二叉樹的三種遍歷算法;掌握二叉樹的線索化方法;靈活運用二叉樹的遍歷方法解決相關的應用問題。
7、圖(3學時)實驗八 圖的應用
要求:理解圖的基本概念及術語;掌握圖的兩種存儲結構(鄰接矩陣和鄰接表)的表示方法;熟練掌握圖的兩種遍歷(深度優先搜索遍歷和廣度優先搜索遍歷)的算法思想,步驟,并能列出在兩種存儲結構上按上述兩種遍歷算法得到的序列;理解最小生成樹的概念,能按prim算法構造最小生成樹;領會并掌握拓撲排序,關鍵路徑,最短路徑的算法思想。
8、查找(3學時)實驗九 順序查找 實驗十 折半查找 實驗十一 哈希表的應用 實驗十二 二叉排序樹的綜合練習要求:了解查找的基本思想及查找成功和不成功的概念;掌握在順序表,有序表,索引表,散列表等上的查找方法和算法,并能求出相應的平均查找長度;理解并掌握二叉排序樹,平衡二叉樹b-樹的各種算法。
9、排序(3學時)實驗十三 插入排序 實驗十四 選擇排序 實驗十五 排序綜合練習
要求:領會排序的基本思想和基本概念;理解并掌握插入排序,冒泡排序,快速排序,直接選擇排序,堆排序,歸并排序和基數排序的基本思想,步驟,算法及時空效率分析;了解外排序的定義和基本方法。
五、大綱說明
1、課堂講述的論題只是核心或有特色的知識內容,還有相當數量的篇章內容留給學生自學,所確定的自學部分內容亦屬考查范圍。
2、“數據結構”課注重上機訓練,所有作業都必須配有規范的文檔。上機訓練由平時的上機訓練和小學期的實訓課程設計兩部分組成。
3、課內學時安排說明:前8周每周4學時全為理論課,從第9周開始理論和上機為1:1,也即2學時理論,2學時上機訓練。
4、本課強調能力的培養,期末采用半開卷考試(允許同學攜帶一頁a4紙的總結資料)。本課成績由平時作業、上機成績(30%)和期末考試(70%)合成得到,有獨到見解的作業予以適當加分。
5、主要參考書:
[1]《數據結構與算法教程》鄒永林 周蓓 唐曉陽 楊劍勇 編著 機械工業出版社
[2]《數據結構(c語言版)》(含cd)嚴蔚敏 吳為民 編著 清華大學出版社
[3]《數據結構習題集(c語言版)》嚴蔚敏 編著 清華大學出版社
[4]《數據結構習題解析與實訓》張世和 編著 清華大學出版社
;j++){;i++){數據結構與算法論文篇二
000648043 姚金宇
我是計算機系2006級本科生,在大二上學期選修了張銘老師的數據結構與算法實驗班。數據結構與算法課是每一個計算機專業學生的必修課,從我目前所學習的后續課程,包括算法設計、編譯技術等課程來看,這門課是其非常重要的基礎課程之一。
我從初中就開始接觸高中的信息學奧林匹克競賽,對數據結構與算法方面的相關知識接觸的比較早。張老師為了更有針對性地對具有不同基礎的學生進行因材施教,開設了數據結構算法實驗班,我很榮幸地被批準通過選修實驗班的課。通過一個學期的學習,我加深了對數據結構與算法的相關知識的理解,并通過張老師細致地講解,將自己過去從高中競賽所學到的離散的、碎片式的知識點連貫地串了起來,形成了一套較為完整的知識體系。我想這對于我后續的學習和對更高層次數據結構與算法知識的探索,都是大有裨益的。
我認為,在這門課的學習過程中,張老師所引導我們掌握的不僅僅是知識點與問題的簡單聯系,而是進行拓展性地思考和探索。例如樹的順序存儲,除了講解各種帶標記的存儲方法以外,我們還討論了這些存儲方式中記錄的信息是不是都是必須的、如何用最少的標記信息表示一棵樹等問題。這就讓我們對原本看似平凡的知識有更深刻的認識。另外,我們所完成的作業和練習也都不是簡單的解題訓練,很多問題都是帶有可研究性與可擴展性的,甚至很多問題沒有單一的結論,這就引導我們創造性地應用所學的知識去研究問題、解決問題。
張老師在實驗班的課堂上不但注重基礎知識的講解,還會適當介紹一些較為高級的數據結構(例如伸展樹、后綴樹等),以及一些較新的算法研究成果。這些介紹不僅對于鞏固基礎數據結構有很強的促進作用,還讓對我們往后更難的課程更有信心。事實上,我認為算法與數據結構在我們計算機專業課程的學習中是無處不在的,圖論中的樹、圖模型,組合數學中模型的計數,編譯技術中關于文法的分析、自動機模型,無一不包含數據結構與算法的理論。能夠更快、更好地掌握后續這些課程的知識體系,于我在數據結構與算法課中所學是分不開的。我是北大acm隊員之一,并于今年代表北京大學參加了第32屆acm-icpc國際大學生程序設計競賽全球總決賽,獲得了第13名。acm-icpc競賽十分注重選手對于模型抽象的能力、對于數據結構與算法的理解以及編程能力。這門課程對我參加acm競賽無疑也是幫助甚大。它讓我更系統、透徹地理解了數據結構與算法的相關知識,對于在賽場上的解題能力和解題速度都有很大的提高??偠灾瑥埨蠋煹臄祿Y構與算法這門課程作為我的必修課之一,對于我計算機專業的學習是幫助很大并且影響深遠的。
北京大學計算機系2006級本科生
000648043 姚金宇
2008年4月14日
數據結構與算法論文篇三
《數據結構與算法》課程設計教學大綱(data structures & algorithms)
一、基本信息
課程編號:e1132107 課程類別:學科基礎課必修課 適用層次:本科
二、教學目的
數據結構與算法課程設計不僅是數據結構與算法課程的實踐教學環節,而且是一門綜合性實驗項目。通過這個實驗,培養學生綜合運用數據結構基本知識和程序設計基本知識,解決實際問題,提高程序設計的能力和團隊協作精神。
本課程設計的目的就是要達到理論與實際應用相結合,使同學們能夠根據數據對象的特性,學會數據組織的方法,能把現實世界中的實際問題在計算機內部表示出來,并培養基本的、良好的程序設計技能。
1.學生通過實踐掌握線性表、樹、圖等數據結構的存儲結構及算法實現; 2.培養學生利用數據結構知識解決實際問題的能力;3.使學生初步具備查閱資料、分析設計、上機實現和書寫科技 報告的能力。
三、基本要求
1.指導教師要在選題、設計、上機實現等諸環節上投入精力,加強指導、討論和答疑的力度。尤其在選題上,要充分考慮學生目前所具有的知識水平、掌握的開發工具、以及綜合設計能力的現狀,使題目取材合理、大小適中、難易適度,使學生在完成設計工作后,能有所收獲。2.參加課程設計的學生要珍惜機會、勤奮工作、勇于創新、勇于探索、勇于實踐,虛心向指導教師請教,向同學學習,獨立完成設計任務。
3.學生需保質、保量、保時間進度地提交規范的課程設計報告,審查由指導教師負責。
四、教學內容
1.主要內容:應用所掌握的線性表、樹、圖等數據結構知識解決實際問題。2.軟件開發工具:c/c++、java。
3.課程設計題目:指導教師擬定(參考題目見附錄1)
4.具體步驟:指導教師擬定設計題目,學生研究具體問題、進行需求分析、選擇合適的數據結構、設計算法、編寫并調試代碼、書寫文檔材料、提交設計報告,最后,由指導教師驗收并評定成績。
5.設計內容及時間安排:第1-3天,選定題目,明確題目要求、確定數據結構、設計算法,并分析算法復雜度;第4-8天,編寫程序、調試程序、測試程序;第9-10天,撰寫設計報告,準備答辯(上機演示,回答教師提問)。6.設計報告書寫要求:按照軟件開發規范的要求書寫設計報告(參見附錄三報告書寫格式);要求報告層次結構清晰、圖表完整、語言通順、字跡工整。7.驗收要求:1)運行所設計的程序;2)回答有關問題;3)提交課程設計報告(打印或手寫在實習報告冊上);4)提交軟盤(源程序)。(鼓勵學生創新。對內容有創新者,成績評定將適當提高)。
五、考核方法
學習成績的評定方式:考查。
課程設計成績評定 =平時出勤(20%)+設計報告(40%)+答辯(40%)通過設計答辯方式,并結合學生的動手能力,獨立分析解決問題的能力和創新精神,總結報告和答辯水平以及學習態度綜合考評。成績分為優、良、中、及格和不及格五等。
六、教材與參考資料 1.建議教材:
2.建議參考書目:
附錄一
參考題目(可分若干組,每個學生選擇其中一個題目)
1.商廈家電庫存管理 2.排序算法的時間比較
16.文字統計系統—文字研究助手 17.修道士野人問題 18.考試問題
19.計算機輔助考核系統 20.學籍管理系統
注:學生可以自選題目或選擇指導老師擬定的題目。
附錄二
開發步驟
1.分析題目的要求、目的; 2.選擇適當的數據結構;
3.抽象數據類型的設計; 4.抽象數據類型的實現; 5.編寫代碼、上機調試; 6.總結驗收、評價。
附錄三 報告書寫格式
1.問題描述
題目內容、基本要求 2.需求分析
軟件的基本功能、輸入/輸出形式、測試數據要求 3.概要設計
所需的adt及作用、主程序流程及模塊調用關系 4.詳細設計
編碼與調試過程中遇到的問題及解決的辦法,還存在哪些沒有解決的問題? 6.使用說明
簡要說明程序運行操作步驟 7.測試結果
8.課程設計心得體會
數據結構與算法論文篇四
070401301507計本(3)班張浩
本學期開設的《數據結構與算法》課程已經告一段落,現就其知識點及其掌握情況、學習體會以及對該門課程的教學建議等方面進行學習總結。
一、《數據結構與算法》知識點
在課本的第一章便交代了該學科的相關概念,如數據、數據元素、數據類型以及數據結構的定義。其中,數據結構包括邏輯結構、存儲結構和運算集合。邏輯結構分為四類:集合型、線性、樹形和圖形結構,數據元素的存儲結構分為:順序存儲、鏈接存儲、索引存儲和散列存儲四類。緊接著介紹了一些常用的數據運算。最后著重介紹算法性能分析,包括算法的時間性能分析以及算法的空間性能分析。
第二章具體地介紹了順序表的概念、基本運算及其應用?;具\算有:初始化表、求表長、排序、元素的查找、插入及刪除等。元素查找方法有:簡單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等。最后介紹了順序串的概念,重點在于串的模式匹配。
鏈表中數據元素的存儲不一定是連續的,還可以占用任意的、不連續的物理存儲區域。與順序表相比,鏈表的插入、刪除不需要移動元素,給算法的效率帶來較大的提高。鏈表這一章中介紹了鏈表的節點結構、靜態與動態鏈表的概念、鏈表的基本運算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環鏈表的定義、結構、功能和基本算法。
堆棧與隊列是兩種運算受限制的線性結構。其基本運算方法與順序表和鏈表運算方法基本相同,不同的是堆棧須遵循“先進后出”的規則,對堆棧的操作只能在棧頂進行;而隊列要遵循“先進先出”的規則,教材中列出了兩種結構的相應算法,如入棧、出棧、入隊、出隊等。在介紹隊列時,提出了循環隊列的概念,以避免“假溢出”的現象。
第六章介紹了特殊矩陣和廣義表的概念與應用。其中,特殊矩陣包括對稱矩陣、三角矩陣、對角矩陣和稀疏矩陣,書中分別詳細介紹了它們的存儲結構。稀疏矩陣的應用包括轉置和加法運算等。最后介紹了廣義表的相關概念及存儲結構,關于它的應用,課本中舉了m元多項式的表示問題。
第七章二叉樹的知識是重點內容。在介紹有關概念時,提到了二叉樹的性質以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲和鏈接存儲以及生成算法。重點介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應用:基本算法、哈弗曼樹、二叉排序樹和堆排序。
樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲結構,還有樹、森林和二叉樹的相互關系,樹或森林怎樣轉化成二叉樹,二叉樹又如何轉換為樹和森林等算法。散列結構是一種查找效率很高的一種數據結構。本章的主要知識點有:散列結構的概念及其存儲結構、散列函數、兩種沖突處理方法、線性探測散列和鏈地址散列的基本算法以及散列結構的查找性能分析。
最后一章介紹了圖的概念及其應用,是本書的難點。圖的存儲結構的知識點有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優先搜索遍歷和廣度優先搜索遍歷。其余知識點有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環圖及其應用。有向無環圖重點理解aov網和拓撲排序及其算法。
二、對各知識點的掌握情況
總體來看,對教材中的知識點理解較為完善,但各個章節均出現有個別知識點較為陌生的現象。現將各個章節出現的知識點理解情況列舉如下。
第一章中我對數據和數據結構的概念理解較為透徹,熟悉數據結構的邏輯結構和存儲結構。而對算法的時間、空間性能分析較為模糊,尤其是空間性能分析需要加強。
第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡單順序查找和二分查找,對分塊查找較為含糊;排序問題中,由于冒泡排序在大一c語言課上已經學習過,再來學習感覺很輕松。對插入排序和選擇排序理解良好,但是,在實際運用中仍然出現明顯不熟練的現象。由于在歸并排序學習中感覺較吃力,現在對這種排序方法仍然非常模糊,所以需要花較多的時間來補習。此外串的模式匹配也是較難理解的一個地方。
鏈表這一章中,除對雙向循環鏈表這一知識點理解困難之外,其他的知識點像單鏈表的建立和基本算法等都較為熟悉。
接下來的有關堆棧以及隊列的知識點比較少,除有關算法較為特殊以外,其余算法都是先前學過的順序表和鏈表的知識,加上思想上較為重視,因此這部分內容是我對全書掌握最好的一部分。不足之處仍然表現在算法的性能分析上。
在學習第六章時感覺較為吃力的部分在于矩陣的應用上,尤其對矩陣轉置算法的c語言描述不太理解。稀疏矩陣相加算法中,用三元組表實現比較容易理解,對十字鏈表進行矩陣相加的方法較為陌生。
第七章是全書的重點,卻也有一些內容沒有完全理解。在第一節基本概念中,二叉樹的性質容易懂卻很難記憶。對二叉樹的存儲結構和遍歷算法這部分內容掌握較好,能夠熟練運用,而對于二叉樹應用中的哈弗曼樹卻比較陌生。
第八章內容較少,牽涉到所學的隊列的有關內容,總體來說理解上沒有什么困難,問題依舊出現在算法的性能分析上。
散列結構這一章理解比較完善的知識點有:基本概念和存儲結構。散列函數中直接定址法和除留余數法學得比較扎實,對數字分析法等方法則感覺較為陌生。對兩種沖突處理的算法思想的理解良好,問題在于用c語言描述上。
最后一章,圖及其應用中,圖的定義、基本運算如圖的生成等起初理解有困難,但隨著學習深入,對它的概念也逐步明朗起來。鄰接矩陣、鄰接表和逆鄰接表掌握較好,而對十字鏈表和鄰接多重表則較為陌生。感覺理解較為吃力的內容還有圖的遍歷(包括深度和廣度優先遍歷),最小生成樹問題也是比較陌生的知識點。最短路徑和aov網學習起來感覺比較輕松,而對于c語言描述卻又不大明白。
三、學習體會
在學習伊始,老師就明確提出它不是一種計算機語言,不會介紹新的關鍵詞,而是通過學習可以設計出良好的算法,高效地組織數據。一個程序無論采用何種語言,其基本算法思想不會改變。聯系到在大一和大二上學期學習的c和c++語言,我深刻認識到了這一點?!败浖_發好比寫作文,計算機語言提供了許多華麗的辭藻,而數據結構則考慮如何將這些辭藻組織成一篇優秀的文章來。”在學習這門課中,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計算機語言描述等。因此,計算機語言基礎是必須的,因為它提供了一種重要的算法思想描述手段——機器可識別的描述。
自己的程序中再加以必要的連接以完成程序的編寫。針對這一情況,我會嚴格要求自己,熟練掌握算法思想,盡量獨立完成程序的編寫與修改工作,只有這樣,才能夠提高運用知識,解決問題的能力。
四、對《數據結構與算法》課程教學的建議
1、建議在上課過程中加大隨堂練習的分量,以便學生能當堂消化課堂上學習的知識,也便于及時了解學生對知識點的掌握情況,同時有助于學生保持良好的精神狀態。
2、建議在課時允許的情況下,增加習題課的分量,通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。
以上便是我對《數據結構與算法》這門課的學習總結,我會抓緊時間將沒有吃透的知識點補齊。今后我仍然會繼續學習,克服學習中遇到的難關,在打牢基礎的前提下向更深入的層面邁進!
數據結構與算法論文篇五
計科系 10級計本
一、數據結構與算法知識點
《數據結構與算法》這本書共有十一個章節。從第一章的數據結構和算法的引入,介紹了數據和數據類型、數據結構、算法描述工具、算法和算法評價四個方面的知識。第二章則介紹了順序表及其應用的相關知識。從順序表的基本概念開始,分別介紹了順序表基本算法、順序表基本算法性能分析、順序表的應用。順序表應用又涉及多方面,有查找問題、排序問題、字符處理問題。其中查找分簡單順序查找,有序表的二分查找,分塊查找三種。排序中分插入排序(直接插入排序、希爾排序)、交換排序(冒泡排序、快速排序)、選擇排序(直接選擇排序)、歸并排序。第三章鏈表及其應用,分為鏈表的基本概念、單鏈表的數據結構、單鏈表的基本算法、循環鏈表、鏈表的應用。第四章堆棧及其應用,分為堆棧堆的基本概念、順序棧及其基本算法、鏈棧及其基本算法、堆棧的應用。第五章隊列及其應用,分為隊列的基本概念、順序隊列及其基本算法、鏈隊列及其基本算法、基數排序問題。第六章特殊矩陣和廣義表及其應用,分為數組與矩陣,特殊矩陣的壓縮存儲、矩陣的應用實例、廣義表。第七章二叉樹及其應用。分為二叉樹的基本概念、二叉樹存儲結構、二叉樹的遍歷算法、線索二叉樹、二叉樹的應用(基本算法、哈夫曼樹、二叉排序樹、堆和堆排序)。第八章樹和森林及其應用。分為樹和森林的基本概念,樹的存儲結構、樹的基本算法及性能分析、樹的應用(b樹)。第九章散列結構及其應用。分為散列結構的概念等。著重學習了散列表、散列函數、沖突處理方法(開放定址法和鏈地址法)。第九章圖及其應用。分為圖的概念、圖的存儲結構及其基本算法、圖的遍歷及算法、有向圖的連通性和最小生成樹、圖的最小生成樹、非連通圖的生成森林算法、最短路徑、有向無環圖及其應用。第十一章算法性能分析和算法設計方法簡介。
二、對各知識點的掌握情況
綜合以上知識點,我對自我學習成果作如下總結:對于第一章對數據結構的概念理解頗深,大概是每次都要談論到吧。對算法的時間性能,空間性能基本了解。這些在后面的章節都會有運用。第二章順序表較為清晰。如何去建一個順序表,順序表的一些基本算法都可以很好運用。在順序表應用中對二分查找映象深刻。對于排序能了解其算法思想。對字符串的處理應用的較少,沒有深入了解。第三章鏈表的知識,由于鏈表在上學期就有所接觸,老師也強調其作用,對鏈表掌握還好,但在第三章中又學習到了新的內容,對其數據結構進行了分析,增加了循環鏈表,對知識進行補充。第四章堆棧,堆棧是一個運算受限的線性表,可對比順序表的學習,不同的是還有鏈棧,這部分感覺是全書最容易的部分了。第五章隊列是接著堆棧之后的又一個運算受限制的線性表,感覺和堆棧一樣簡單。第六章矩陣和廣義表是我的弱項,在這部分的學習過程中沒有用心學,現在正在深入研究。接下來的第七章第八章是全書的重點,特別是第七章二叉樹,所以學習的重心也偏向這兩章。對二叉樹掌握較好,其概念,存儲,遍歷有很好的掌握。就是對二叉排序樹有點生疏,它的生成算法不是很會。
第八章樹和森林,樹與二叉樹之間的轉換,森林與二叉樹的轉換算法思想基本掌握。第九章散列的一些知識,沒有深入學習,大概了解了散列存儲結構散列表,散列函數,沖突的處理方法。第十章感覺是很難的一章,知識點多,能夠畫有向圖和無向圖的鄰接矩陣,鄰接表。圖的深度遍歷和廣度遍歷,但是其算法只是能讀懂。
三、學習體會
應用。知道了學習一種數據結構必須掌握該數據結構的定義,其包括邏輯結構,存儲結構和基本算法還有基本應用知識。對于一個應用程序,不是它能運行,能顯示結果就行了,還要考慮它的各方面的性能,時間性能,空間性能。以此節約空間和時間。給定一個程序首先要分析其應有的數據結構。怎么存儲,怎么性能會比較好。“數據結構與算法”是一門很有用的科目,可是也是很令人頭疼的學科,這也鍛煉了我們迎難而上的毅力。當然學習數據結構與算法是建立在學習好計算機語言的基礎上的,學習編程是枯燥無味的,學據結構給我帶來更多的是思考的東西。
課程結束我總結了學習過程中遇到的困難,有時寫不出合條件的算法,在寫實驗報告時,有時就是將書上的源程序搬上去,對程序進行一些修改。針對這一情況我會慢慢改正。多加思考。
四、對課程教學的建議
1、課程課時較緊,課堂上的練習時間較少,講解的東西越多,頭腦有時就很混亂。
2、長期的ppt教學,會使產生疲勞,稍不留神,思維開了小差,就跟不上了。可以適當結合ppt和例題講解。通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。