第一篇:“數據結構與算法”課程學習總結報告內容要求
“數據結構與算法”課程學習總結報告內容要求
1、根據“數據結構與算法”教學大綱中各章“知識點”總結學習內容。
2、根據“數據結構與算法”教學大綱中各章“知識點”的要求,總結和分析本人對各知識點掌握的情況(逐知識點進行)。
3、學習“數據結構與算法”課程的學習體會。
4、對“數據結構與算法”課程教學的建議。
5、文檔格式為A4紙、頁邊距上下2.54cm,左右3.17cm、宋體、5號字、一級標題加粗、單倍行距;
第二篇:“數據結構與算法”課程學習總結報告
“數據結構與算法”課程學習總結報告
1004012033 陳孝婕 10計本3 “數據結構與算法”這門課程對于計算機科學與技術系的學生來說是非常重要的課程。這門課程主要包括十個章節。
一.每章主要知識點總結和個人掌握情況
第一章主要要求學生掌握數據、數據類型、數據結構、算法及算法分析等基本概念和基礎知識。另外,第一章結合課程學習要求,復習和掌握算法描述工具--C語言中的指針類型與指針變量、結構類型與結構變量、函數與參數、遞歸定義和遞歸函數、動態存儲分配、文件操作、程序測試和測試集、測試數據的設計和程序調試等問題。
從這一章中我不僅學到了數據結構的基本概念和基礎知識,了解到什么是數據結構,我們為什么要學習數據結構這門課程。而且復習了大一下學期所學的C語言程序課程設計中的算基本法語句。有利于數據結構與算法后面課程的學習。
第二章主要學習順序表(包括順序串)數據類型、數據結構、基本算法及相關應用。知識點包括順序表的概念、數據結構定義、數據類型描述、基本算法的實現及其性能的分析等知識;還有“查找”和“排序”的概念,“查找”包括3種查找方式:簡單順序查找、二分查找、分塊查找;“排序”包括直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序和歸并排序(重點為二路歸并排序)6種排序方式;掌握應用順序表來進行查找和排序的各類算法以及不同的查找和排序算法間的性能差異。在此基礎上,理解順序串的相關應用。
從這一章中我學習到各種不同的查找方法和排序方式,其中二分查找作為重點查找方法我進行了重點學習,熟悉并熟練地運用二分查找并且了解到各種排序方法適合于不同的順序表。對于順序串的學習,我主要掌握了字符串的基本運算,包括:求串長strlen(S)、連接stract(ST1,ST2)、求子串substr(S,i,j)、比較串的大小strcmp(S,T)、插入insert(S1,i,S2)、刪除delete(S,i,j)、子串定位index(S1,S2)、置換(replace(S1,i,j,S2)、replace(S,T,V)兩種)。
第三章主要學習鏈表(單聊表、循環鏈表)的概念、數據結構、數據類型描述、基本算法以及鏈表相關應用。需要掌握各種鏈表的概念、數據結構定義、基本算法實現以及算法的性能分析等知識,掌握鏈表的相關應用方法,在此基礎上掌握鏈串的相關知識。
通過這一章我學習了另一種數據結構——鏈表,在邏輯結構上,鏈表與順序表一樣,也是線性邏輯結構;單鏈表借助“地址”的概念,使用了鏈式存儲結構,產生了一種新的數據結構——鏈表,鏈表的基本操作是地址運算,在此基礎上構成的鏈表基本算法的特點也就不同,從鏈表算法的功能看,鏈表的基本運算與順序表基本相同,但實現方法和過程與順序表是不同的,鏈表可分為靜態鏈表和動態鏈表兩種。這一章我學習到的實際應用是鏈表的創建、插入和刪除等基本操作。循環鏈表的建立和查詢方法。
第四章主要知識點是在兩種不同的存儲結構下設計的堆棧,即順序棧和鏈棧。主要內容是順序棧和鏈棧的概念、數據類型、數據結構定義和基本運算算法及其性能分析。通過對本章的學習,要求掌握順序棧及鏈棧的數據類型描述、數據結構、基本算法及其性能分析等知識。在此基礎上,了解堆棧的相關應用,掌握應用堆棧解決實際問題的思想及方法。
通過對這一章的學習,我了解了堆棧的概念,堆棧的原理、創建方法以及使用方式。“后進先出”是其基本原則。利用堆棧可以輕松方便的解決對稱問題以及括號匹配等問題。堆棧與順序表、鏈表不同的是,堆棧只能對一端的數據元素進行操作,即只在棧頂進行元素的插入和刪除。掌握順序棧和鏈表的存儲結構是學習堆棧的要素之一。堆棧是一類常用的數據結構,被廣泛應用于各種程序設計中。
第五章的重點知識是在順序存儲和鏈接存儲下的兩種隊列——順序(循環)隊列和鏈隊
列的數據結構、基本運算及其性能分析以及應用。通過本章的學習,要求掌握順序隊列(重點是循環隊列)及鏈隊列的概念、數據類型描述、數據結構、基本算法及其性能分析等知識。在此基礎上,了解隊列的相關應用,掌握應用隊列來解決實際問題的思想及方法。
通過這一章的學習,我掌握了隊列的定義,概念,創建以及“對頭刪除”,“隊尾插入”的原則。重點了解了判斷循環隊列空和滿的判斷條件。同堆棧一樣,隊列也是一種具有線性邏輯結構、運算受限制的數據結構。與堆棧只在一端(棧頂)進行元素的插入和刪除運算不同的是,隊列是在對頭進行插入,而在隊尾完成數據元素的刪除,所以隊列的算法和適用的應用問題與堆棧有很大的區別。隊列作為一類常用的數據結構,被廣泛應用于各種程序設計中。
第六章主要學習數組、系數矩陣和廣義表的基本概念、集中特殊矩陣的存儲結構及基本運算,在此基礎上學習特殊矩陣的計算算法與廣義表應用等相關問題。通過本章的學習,要求掌握特殊矩陣的壓縮存儲結構,在該存儲結構下元素的定位方法,理解稀疏矩陣的計算和廣義表的存儲結構及其基本運算。了解矩陣與廣義表的相關應用。
通過這章的學習和前幾章的比較,我了解到前幾章的線性結構中的數據元素都是非結構的原子類型,即每一個元素都是不可再分解的。本章討論的數組和廣義表等數據結構可以看成是在前幾章線性結構基礎上的一個擴展:組成該數據結構的數據元素本身也是一個數據結構。矩陣計算應該數值計算方面的問題,由于矩陣和數組的關系以及特殊矩陣存儲結構的復雜性,進而使得特殊矩陣的存儲結構和算法也表現出其特殊性,所以數據機構課程應該解決其計算問題。
第七章的學習重點是二叉樹的概念、數據類型、數據結構定義和各種基本算法,在此基礎上介紹二叉樹的一些應用問題。通過本章的學習,我掌握了二叉樹概念及其性質、二叉樹的邏輯結構和存儲結構等知識,掌握二叉樹的建立、遍歷、線索化等基本概念和算法及性能分析,能熟練應用二叉樹這章結構來解決一些實際問題,如哈夫曼樹及哈夫曼編碼、查找與排序(二叉樹排序)等問題。了解堆棧排序及其算法等知識。二叉樹是非線性數據結構,是樹形結構的一種特殊形式。在現實生活有許多數據關系可抽象為樹或二叉樹的形式。本章中的二叉樹的概念及其性質、二叉排序樹、存儲結構、遍線索(化)、基本算法為重點內容,二叉排序樹的應用為難點內容。
第八章的學習重點是樹和森林的數據結構、基本算法及其性能分析,樹和森林與二叉樹間的轉化算法等,在此基礎上介紹樹的應用——B-樹。通過本章的學習,我掌握了樹和森林的概念和性質、數據結構、樹的基本算法及性能分析、樹與二叉樹間的轉換及其算法,并能應用B-樹來實現數據元素的動態查找。舒適一種非線性結構,它在二叉樹的基礎上做了更為一般化的擴展,而森林是樹的集合。在樹結構中,每一個元素最多只有一個前驅,但可能有多個后繼。現實生活中的家族關系、單位的組成結構等,均可抽象為樹的形式。
第九章學習重點是散列結構的相關知識,學習常用的散列函數和沖突處理方法,散列表的常用算法及其性能分析,通過本章的學習,我掌握了散列結構和散列函數的相關概念,掌握散列結構的存儲(散列表)的相關概念,要求掌握散列沖突處理方法(散列法)的相關知識,并能靈活運用散列法解決應用問題。
散列結構是使用散列函數建立數據結點關鍵字與存儲地址之間的對應關系并提供多種當數據節點存儲地址發生“沖突”時的處理方法而建立的一種數據結構。散列結構的查找等運算效率是很高的,本章中的散列函數、散列結構、散列表、散列法的基本概念和基本算法是重點,線性探測散列算法、鏈地址法散列算法和散列法的應用是難點。
第十章的學習重點是圖的定義及性質,圖的四種存儲結構,圖的兩種遍歷算法以及圖的典型應用,包括最小生成樹、最短路徑、拓撲排序和關鍵路徑等。通過本章學習,我掌握了圖的概念和基本性質,圖的存儲結構(鄰接矩陣和鄰接表)及其基本算法、圖的遍歷及算法、圖的最小生成樹普利姆算法或者克魯斯卡爾算法、圖的最短路徑迪杰斯特拉算法和弗洛伊德算法、有向無環圖拓撲排序算法。了解了圖的逆鄰接表、十字鏈表、鄰接多重表存儲結構及其基本算法、關鍵路徑求解算法,并能靈活運用圖的不同的數據結構和遍歷算法解決復雜的應用問題。
二.課程學習體會
在學習開始的時候,老師就明確提出它不是一種計算機語言,不會介紹C語言的變成語言,而是通過學習可以設計出良好的算法,高效地組織數據。一個程序無論采用何種語言,其基本算法思想不會改變。聯系到在大一和大二上學期學習的C和C++語言,我深刻認識到了這一點。“軟件開發好比寫作文,計算機語言提供了許多華麗的辭藻,而數據結構則考慮如何將這些辭藻組織成一篇優秀的文章來。”在學習這門課中,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計算機語言描述等。因此,計算機語言基礎是必須的,因為它提供了一種重要的算法思想描述手段——機器可識別的描述。
這門課結束之后,我總結了學習中遇到的一些問題,最為突出的,書本上的知識與老師的講解都比較容易理解,但是當自己采用剛學的知識點編寫程序時卻感到十分棘手,有時表現在想不到適合題意的算法,有時表現在算法想出來后,只能將書本上原有的程序段謄寫到自己的程序中再加以必要的連接以完成程序的編寫。針對這一情況,我會嚴格要求自己,熟練掌握算法思想,盡量獨立完成程序的編寫與修改工作,只有這樣,才能夠提高運用知識,解決問題的能力。
三.對《數據結構與算法》課程教學的建議
1、建議在上課過程中加大隨堂練習的分量,以便學生能當堂消化課堂上學習的知識,也便于及時了解學生對知識點的掌握情況,同時有助于學生上課積極思考,不會開小差。
2、建議在課時允許的情況下,增加習題課的分量,通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。
以上便是我對《數據結構與算法》這門課的學習總結,我會抓緊時間將沒有吃透的知識點補齊。今后我仍然會繼續學習,克服學習中遇到的難關,在打牢基礎的前提下向更深入的層面邁進!
第三篇:數據結構與算法課程學習總結報告
數據結構與算法課程學習總結報告
數據結構與算法是計算機程序設計的重要理論技術基礎,它不僅是計算機科學的核心課程,而且也已經成為其他理工專業的熱門選修課。隨著高級語言的發展,數據結構在計算機的研究和應用中已展現出強大的生命力,它兼顧了諸多高級語言的特點,是一種典型的結構化程序設計語言,它處理能力強,使用靈活方便,應用面廣,具有良好的可移植性。通過學習,先報告如下:
一、數據結構與算法知識點
本學期學的《數據結構與算法》這本書共有十一個章節:
第一章的內容主要包括有關數據、數據類型、數據結構、算法、算法實現、C語言使用中相關問題和算法分析等基本概念和相關知識。其中重點式數據、數據類型、數據結構、算法等概念;C語言中則介紹了指針、結構變量、函數、遞歸、動態存儲分配、文件操作、程序測試與調試問題等內容。
第二章主要介紹的是線性邏輯結構的數據在順序存儲方法下的數據結構順序表(包括順序串)的概念、數據類型、數據結構、基本運算及其相關應用。其中重點一是順序表的定義、數據類型、數據結構、基本運算和性能分析等概念和相關知識。二是順序表的應用、包括查找問題(簡單順序查找、二分查找、分塊查找)、排序問題(直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序、歸并排序)、字符處理問題(模式匹配)等內容。本章重點和難點在查找和排序問題的算法思想上,6種排序方法的性能比較。
第三章主要介紹的是線性邏輯結構的數據在鏈接存儲方法下數據結構鏈表的相關知識。主要是單鏈表、循環鏈表的數據類型結構、數據結構、基本運算及其實現以及鏈表的相關應用問題,在此基礎上介紹了鏈串的相關知識。在應用方面有多項式的相加問題、歸并問題、箱子排序問題和鏈表在字符處理方面的應用問題等。本章未完全掌握的是循環鏈表的算法問題和C的描述。
第四章介紹在兩種不同的存儲結構下設計的堆棧,即順序棧和鏈棧的相關知識,了解堆棧的相關應用,掌握應用堆棧來解決實際問題的思想及方法。本章主要內容是順序棧和鏈棧的概念、數據類型、數據結構定義和基本運算算法及其性能分析。本章堆棧算法思想較為簡單,所以能較好掌握。
第五章主要介紹順序存儲和鏈接存儲方法下的兩種隊列、順序(循環)隊列和鏈隊列的數據結構、基本運算及其性能分析以及應用。順序隊列(重點是循環隊列)和鏈隊列的概念、數據類型描述、數據結構和基本運算算法及其性能分析等。本章同堆棧有點類似,算法思想較為簡單,所以能較好掌握;但難點重在循環隊列隊空、隊滿的判斷條件問題。第六章“特殊矩陣、廣義表及其應用”將學習數組、稀疏矩陣和廣義表的基本概念,幾種特殊矩陣的存儲結構及其基本運算,在此基礎上學習特殊矩陣的計算算法與廣義表應用等相關問題。本章的重點是相關數據結構的存儲結構及其基本運算算法。掌握了特殊矩陣的壓縮存儲結構,在該存儲結構下元素的定位方法,理解了稀疏矩陣的計算和廣義表的存儲結構。
第七章“二叉樹及其應用”的知識結構主要是:非線性結構數據二叉樹的定義、性質、邏輯結構、存儲結構及其各種基本運算算法,包括二叉樹的建立、遍歷、線索化等算法。在此基礎上,介紹二叉樹的一些應用問題,包括哈夫曼編碼問題、(平衡)二叉排序樹問題和堆排序問題等。
第八章“樹和森林及其應用”介紹樹和森林的數據結構、基本算法及其性能分析,樹和森林與二叉樹之間的轉換算法等,在此基礎上介紹樹的應用---B-樹,應用B-樹來實現數據元素的動態查找。本章基本掌握樹和森林的概念和性質、數據結構、樹的基本算法及性能分析,樹和二叉樹間的轉換及其算法,并用應用B-樹來實現數據元素的動態查找未能掌握好。
第九章“散列結構及其應用”是邏輯結構“集合型”的數據元素在散列存儲方法下的數據結構及其應用知識內容。主要介紹散列函數的概念、散列結構的概念、散列存儲結構的概念---散列表、散列函數和散列表中解決沖突的處理方法---開放定址法、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,所以掌握不太好。
第十章“圖及其應用”是邏輯結構為“圖形”的數據結構及其應用知識內容,主要介紹圖的定義和基礎知識,圖的2種存儲結構。圖的基本算法以及圖的典型應用問題(最小生成樹、最短路徑、拓撲排序和關鍵路徑等)。
二、對各知識點的掌握情況
我對各知識點的掌握情況總結如下:
第一章不太難,能基本掌握。但關系全書的時間性能分析有些未能全部掌握。第二章本章重點和難點在查找和排序問題的算法思想上,6種排序方法的性能比較。本章未掌握的為希爾排序、快速排序、歸并排序的時間復雜度分析。第三章,對鏈表掌握還好,對其數據結構進行了分析,有循環鏈表,掌握的不是很好,對其中一些用法不熟練。第四章堆棧,本章堆棧算法思想較為簡單,所以能較好掌握,但表達式計算問題未掌握好的。第五章的循環隊列隊空、隊滿的判斷條件問題掌握的不是很好。第六章的重點是相關數據結構的存儲結構及其基本運算算法。掌握了特殊矩陣的壓縮存儲結構,在該存儲結構下元素的定位方法,理解了稀疏矩陣的計算和廣義表的存儲結構。第七章對二叉樹掌握較好,其概念,存儲,遍歷有很好的掌握。就是對二叉排序樹有點生疏,它的生成算法不是很會。第八章樹樹與二叉樹之間的轉換,森林與二叉樹的轉換算法思想基本掌握。第九章散列的一些知識,沒有深入學習,大概了解了散列存儲結構散列表,散列函數,沖突的處理方法。第十章了解了圖的逆鄰接表的存儲結構,關鍵路徑求解算法未能掌握好,不能靈活運用圖的不同數據結構和遍歷算法解決復雜的應用問題。
三、學習體會
通過學習數據結構與算法,讓我對程序有了新的認識,也有了更深的理解。同時,也讓我認識到,不管學習什么,概念是基礎,所有的知識框架都是建立在基礎概念之上的,所以,第一遍看課本要將概念熟記于心,然后構建知識框架。并且,對算法的學習是學習數據結構的關鍵。在第二遍看課本的過程中,要注重對算法的掌握。對于一個算法,讀一遍可能能讀懂,但不可能完全領會其中的思想。掌握一個算法,并不是說將算法背過,而是掌握算法的思想。我們需要的是耐心。每看一遍就會有這一遍的收獲。讀懂算法之后,自己再默寫算法,寫到不會的地方,看看課本想想自己為什么沒有想到。對算法的應用上,學習算法的目的是利用算法解決實際問題。會寫課本上已有的算法之后,可以借其思想進行擴展,逐步提高編程能力。
四、對課程教學的建議
1、感覺上課時的氣氛不是很好,雖然大部分人都在聽,可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,可以是大家都非常關心的一些內容,這樣既讓大家能在思考之余有一個放松,也能夠提高學生的學習積極性和學習效率。
2、學習的積極性很重要,有時候我們花了很長時間去寫實驗報告,也很認真的去理解去掌握,可是最后實驗報告可能就只得了一個C,抄的人反而得A,這樣的話很容易打擊學生的積極性,在后面的實驗報告中沒動力再去認真寫。所以希望老師能在這方面有所調整。
3、雖然講課的時間很緊,但是還是希望老師能在講述知識點的時候能運用實際的調試程序來給我們講解,這樣的話能讓我們對這些內容有更深刻的印象和理解。
第四篇:“數據結構與算法”課程學習總結報告
數據結構課程總結
孫博 1104011045 11 計本3班
如何合理的組織數據、高效的處理數據是擴大計算機應用領域、提高軟件效率的關鍵。而在軟件開發過程中人們會要求軟件工程師們使程序有更高的運行效率。因此要成為一名合格的軟件編程員,必須具備數據結構領域和算法設計領域的專門知識。
本學期我們在李紅老師的帶領下學習了《數據結構結構與算法》一書。這本書安排十分合理,在第一章對全書進行導引和學習的基礎知識、預備知識。在2—6章中使邏輯結構為“線性”的數據結構及其應用知識內容。在7、8章中使邏輯結構中的為“樹形”的數據結構及應喲就能夠只是內容。在第九章中使邏輯結構為“集合性”的數據元素在三列存儲下的數據結構及其應用知識內容。在第十章使邏輯結構為“圖形”的數據數據結構及其應用知識內容。下面將對各章的內容驚醒總結:
第一章:首先介紹了數據的相關知識,講述了數據的概、構成等,數據的最小組成單位。然后講述了數據類型與數據結構。
數據類型包括概念及定義,數據類型包括簡單數據類型和復雜數據。簡單數據類型有:整數,實屬,字符,指針,枚舉量等。而復雜數據類型包括:數組,結構圖,共用體。
而數據結構主要使討論元素之間的關系,數據結構包括三方面內容,及邏輯結構,存儲結構以及一組運算集合。數據的邏輯結構有四種基本結構:集合性結構,線性結構,樹形結構,圖形結構。數據的存儲結構是指數據嚴肅在存儲器中的存儲方式包括順序存儲,鏈表存儲,索引存儲,散列存儲。
然后介紹以前學習的C語言(及本教材的使用的算法描述工具)知識錦興路回顧包括指針、結構比阿亮、函數、遞歸、動態存儲分配、文件操作等內容。
第二章:順序表及其應用主要介紹的是線性邏輯結構的呼聲幾乎在順序存儲方法下的數據結構順序標的概念、數據類型、數據結構、基本運算及相關應用問題。
應用一:查找—介紹了兩種方法:簡單順序查找(從書序標的一端來時掃描,將待查找元素與數據節點中的個元素比較。若相等,則查找成功,否則失敗)和二分查找(將表中間的記錄的關鍵字與給定的值比較,若相等,則成功。否則,將順序表風味左右兩個字表,然后在子表中進一步查找。)應用二:排序問題—介紹了交換排序,選擇排序,插入排序,歸并排序。
1、插入排序
包括直接插入排序(將順序表分為左右兩個子表,左子表為有序表,右子表為無序表,將右子表中的元素插入左子表中)和希爾排序法(將整個待排序的元素序列分割成若干子序列,對每個子序列分別進行直接插入排序,當整個帶排序元素序列“基本有序時”,在進行直接插入排序)
2、交換排序
a)冒泡排序:兩輛比較待排序元素的關鍵字,發現相反時即進行交換,知道沒有逆序的元素為止。b)快速排序算法:在待排序的元素中選定一個“中間數”,將其他數據元素與該數比較,將比其小的數據放道左子表中,比起大的放入右子表中。
3、選擇排序 a)直接選擇排序:將數據進行多談排序,每趟選出其中的最大數或最小數放在最終位置上,每趟中已排好的數不再參加下一輪的排序。b)堆排序:輸出堆頂元素?將剩余元素按關鍵字大小重誠信排列成一個堆?重復上述2個步驟
4、歸并排序
將兩個或兩個以上的有序表合并成一個新的有序表。應用三:字符處理問題 介紹了串和順序串的定義及相關概念,還有順序串的基本算法。
第三章:介紹鏈表。鏈表中數據元素的存儲不一定是連續的,還可以占用任意的、不連續的物理存儲區域。與順序表相比,鏈表的插入、刪除不需要移動元素,給算法的效率帶來較大的提高,且在存儲空間上有動態申請的優點。這一章中介紹了鏈表的節點結構、靜態與動態鏈表的概念、鏈表的基本運算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環鏈表的定義、結構、功能和基本算法。弄清其個運算的算法思想及其時間復雜度和空間性能。最后介紹了鏈表之中存儲結構在實際中的相關應用。
a)單循環鏈表是一種首尾相接的單鏈表,終端結點的指針域指向開始結點或頭結點。鏈表終止條件是以指針等于頭指針或尾指針。采用單循環鏈表在實用中多采用尾指針表示單循環鏈表。優點是查找頭指針和尾指針的時間都是O(n),不用遍歷整個鏈表。
b)雙鏈表就是雙向鏈表,就是在單鏈表的每個結點里再增加一個指向其直接前趨的指針域prior,形成兩條不同方向的鏈。由頭指針head惟一確定。雙鏈表也可以頭尾相構成雙循環鏈表。雙鏈表上的插入和刪除時間復雜度均為O(1)。
順序表和鏈表的比較
a)基本空間的考慮 存儲密度是指節點數據本身所占的存儲量除以結點構所占的存儲總量所得的值。值越大存儲空間利用率越高。
順序表是靜態分配的,存儲密度為1,鏈表是動態分配的,存儲密度小于1。b)順序表適用于靜態查找,要進行刪除和插入操作時,需移動大量結點。鏈表適用于做動態的插入和刪除。
第四章:堆棧是運算受限制的線性結構。其基本運算方法與順序表和鏈表運算方法基本相同,不同的是堆棧須遵循“先進后出”的規則,對堆棧的操作只能在棧頂進行;堆棧在文字處理,匹配問題和算術表達式的求值問題方面的應用。
a)棧的基本運算有六種:構造空棧:InitStack,判棧空:StackEmpty,判棧滿:StackFull,進棧:Push,退棧:Pop,取棧頂元素:StackTop b)在順序棧中有“上溢”和“下溢”的現象。“上溢”是棧頂指針指出棧的外面是出錯狀態。“下溢”可以表示棧為空棧,因此用來作為控制轉移的條件。
c)順序棧中的基本操作有六種:構造空棧,判棧空,判棧滿,進棧,退棧,取棧頂元素
d)鏈棧則沒有上溢的限制,因此進棧不要判棧滿。鏈棧不需要在頭部附加頭結點,只要有鏈表的頭指針就可以了。e)
鏈棧中的基本操作有五種:構造空棧,判棧空,進棧,退棧,取棧頂元素
第五章:隊列及其應用,我們知道隊列是一種特殊的線性表,是一種具有線性邏輯結構的數據元素的集合。而隊列的運算遵循“先進后出”的原則,因此,隊列也是一個運算受限制的線性表。a)隊列的基本運算有六種:置空隊:InitQueue,判隊空:QueueEmpty,判隊滿:QueueFull,入隊:EnQueue,出隊:DeQueue,取隊頭元素:QueueFront b)順序隊列的“假上溢”現象:由于頭尾指針不斷前移,超出向量空間。這時整個向量空間及隊列是空的卻產生了“上溢”現象。為了克服“假上溢”現象引入循環向量的概念,是把向量空間形成一個頭尾相接的環形,這時隊列稱循環隊列。c)判定循環隊列是空還是滿,方法有2種:一種是另設一個標志變量來判斷;第二種是少用一個元素空間,入隊時先測試(q->rear%m=q->front?)滿:空。d)隊列的鏈式存儲結構稱為鏈隊列,一個鏈隊列就是一個操作受限的單鏈表。為了便于在表尾進行插入的操作,在表尾增加一個尾指針,一個鏈隊列就由一個頭指針和一個尾指針唯一地確定。鏈隊列不存在隊滿和上溢的問題。在鏈隊列的出隊算法中,要注意當原隊中只有一個結點時,出隊后要同進修改頭尾指針并使隊列變空。
第六章:介紹了特殊矩陣和廣義表的概念與應用。其中,特殊矩陣包括對稱矩陣、三角矩陣、對角矩陣和稀疏矩陣,書中分別詳細介紹了它們的存儲結構。其中三元組和十字鏈表這兩種結構尤為重要;對著兩種結構的建立了應用要掌握。稀疏矩陣的應用包括轉置和加法運算等。最后介紹了廣義表的相關概念及存儲結構,關于它的應用,課本中舉了m元多項式的表示問題。
第七章:二叉樹的知識是重點內容。在介紹有關概念時,提到了二叉樹的性質以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲和鏈接存儲以及生成算法。重點介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應用:基本算法、哈夫曼樹、二叉排序樹和堆排序,其中關于二叉排序樹和哈弗曼書的構建是重點。
a)兩種特殊的二叉樹:完全二叉樹(非葉子節點均有兩個孩子節點并且對于仍一層某一節點有孩子節點,該層所有節點均有孩子節點)和滿二叉樹(在完全二叉樹上的基礎上最下層從左到右刪除若干個節點。)
b)二叉樹的5個重要性質
c)根據結點的次序不同可得三種遍歷:先序遍歷,中序遍歷、后序遍歷。
d)二叉樹的應用:基本算法、哈弗曼樹、二叉排序樹和堆排序
第八章:介紹了樹和森林。樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲結構,還有樹、森林和二叉樹的相互關系,樹或森林怎樣轉化成二叉樹,二叉樹又如何轉換為樹和森林等算法。
第九章:散列結構是一種查找效率很高的一種數據結構。本章的主要知識點有:散列結構的概念及其存儲結構、散列函數、兩種沖突處理方法、線性探測散列和鏈地址散列的基本算法以及散列結構的查找性能分析。
第十章:介紹了圖的概念及其應用,是本書的難點。圖的存儲結構的知識點有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優先搜索遍歷和廣度優先搜索遍歷。其余知識點有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環圖及其應用。有向無環圖重點理解AOV網和拓撲排序及其算法。
心得體會以及建議:通過學習《數據結構與算法》我們可以設計出更好的算法,高效地組織數據。一個程序無論采用何種語言,其基本算法思想不會改變。“軟件開發好比寫作文,計算機語言提供了許多華麗的辭藻,而數據結構則考慮如何將這些辭藻組織成一篇優秀的文章來。”在學習這門課中,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計算機語言描述等。因此,計算機語言基礎是必須的,因為它提供了一種重要的算法思想描述手段——機器可識別的描述。
這門課結束之后,我總結了學習中遇到的一些問題,最為突出的,書本上的知識與老師的講解都比較容易理解,但是當自己采用剛學的知識點編寫程序時卻感到十分棘手,有時表現在想不到適合題意的算法,有時表現在算法想出來后,只能將書本上原有的程序段謄寫到自己的程序中再加以必要的連接以完成程序的編寫。針對這一情況,我會嚴格要求自己,熟練掌握算法思想,盡量獨立完成程序的編寫與修改工作,只有這樣,才能夠提高運用知識,解決問題的能力。
教學的建議
1、建議在上課過程中加大隨堂練習的分量,以便學生能當堂消化課堂上學習的知識,也便于及時了解學生對知識點的掌握情況,同時有助于學生保持良好的精神狀態。
2、建議在課時允許的情況下,增加習題課的分量,通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。
以上便是我對《數據結構與算法》這門課的學習總結,我會抓緊時間將沒有吃透的知識點補齊。今后我仍然會繼續學習,克服學習中遇到的難關,在打牢基礎的前提下向更深入的層面邁進!
第五篇:數據結構與算法課程學習總結報告
數據結構與算法課程學習總結報告
計科系 10級計本
一、數據結構與算法知識點
《數據結構與算法》這本書共有十一個章節。從第一章的數據結構和算法的引入,介紹了數據和數據類型、數據結構、算法描述工具、算法和算法評價四個方面的知識。第二章則介紹了順序表及其應用的相關知識。從順序表的基本概念開始,分別介紹了順序表基本算法、順序表基本算法性能分析、順序表的應用。順序表應用又涉及多方面,有查找問題、排序問題、字符處理問題。其中查找分簡單順序查找,有序表的二分查找,分塊查找三種。排序中分插入排序(直接插入排序、希爾排序)、交換排序(冒泡排序、快速排序)、選擇排序(直接選擇排序)、歸并排序。第三章鏈表及其應用,分為鏈表的基本概念、單鏈表的數據結構、單鏈表的基本算法、循環鏈表、鏈表的應用。第四章堆棧及其應用,分為堆棧堆的基本概念、順序棧及其基本算法、鏈棧及其基本算法、堆棧的應用。第五章隊列及其應用,分為隊列的基本概念、順序隊列及其基本算法、鏈隊列及其基本算法、基數排序問題。第六章特殊矩陣和廣義表及其應用,分為數組與矩陣,特殊矩陣的壓縮存儲、矩陣的應用實例、廣義表。第七章二叉樹及其應用。分為二叉樹的基本概念、二叉樹存儲結構、二叉樹的遍歷算法、線索二叉樹、二叉樹的應用(基本算法、哈夫曼樹、二叉排序樹、堆和堆排序)。第八章樹和森林及其應用。分為樹和森林的基本概念,樹的存儲結構、樹的基本算法及性能分析、樹的應用(B樹)。第九章散列結構及其應用。分為散列結構的概念等。著重學習了散列表、散列函數、沖突處理方法(開放定址法和鏈地址法)。第九章圖及其應用。分為圖的概念、圖的存儲結構及其基本算法、圖的遍歷及算法、有向圖的連通性和最小生成樹、圖的最小生成樹、非連通圖的生成森林算法、最短路徑、有向無環圖及其應用。第十一章算法性能分析和算法設計方法簡介。
二、對各知識點的掌握情況
綜合以上知識點,我對自我學習成果作如下總結:對于第一章對數據結構的概念理解頗深,大概是每次都要談論到吧。對算法的時間性能,空間性能基本了解。這些在后面的章節都會有運用。第二章順序表較為清晰。如何去建一個順序表,順序表的一些基本算法都可以很好運用。在順序表應用中對二分查找映象深刻。對于排序能了解其算法思想。對字符串的處理應用的較少,沒有深入了解。第三章鏈表的知識,由于鏈表在上學期就有所接觸,老師也強調其作用,對鏈表掌握還好,但在第三章中又學習到了新的內容,對其數據結構進行了分析,增加了循環鏈表,對知識進行補充。第四章堆棧,堆棧是一個運算受限的線性表,可對比順序表的學習,不同的是還有鏈棧,這部分感覺是全書最容易的部分了。第五章隊列是接著堆棧之后的又一個運算受限制的線性表,感覺和堆棧一樣簡單。第六章矩陣和廣義表是我的弱項,在這部分的學習過程中沒有用心學,現在正在深入研究。接下來的第七章第八章是全書的重點,特別是第七章二叉樹,所以學習的重心也偏向這兩章。對二叉樹掌握較好,其概念,存儲,遍歷有很好的掌握。就是對二叉排序樹有點生疏,它的生成算法不是很會。
第八章樹和森林,樹與二叉樹之間的轉換,森林與二叉樹的轉換算法思想基本掌握。第九章散列的一些知識,沒有深入學習,大概了解了散列存儲結構散列表,散列函數,沖突的處理方法。第十章感覺是很難的一章,知識點多,能夠畫有向圖和無向圖的鄰接矩陣,鄰接表。圖的深度遍歷和廣度遍歷,但是其算法只是能讀懂。
三、學習體會
開學伊始,聽說要學數據結構與算法,而且考試通過率極低,就帶著這樣恐懼的心理開始學習了。通過學習數據結構與算法讓我對程序有了新的認識。“數據結構和算法”課程主要學習在軟件開發中涉及到的各種常用數據結構及其常用算法,在此基礎上,學習如何利用數據結構和算法解決一些基本的應用問題,通過學習我了解了相關領域的基礎知識和基本
應用。知道了學習一種數據結構必須掌握該數據結構的定義,其包括邏輯結構,存儲結構和基本算法還有基本應用知識。對于一個應用程序,不是它能運行,能顯示結果就行了,還要考慮它的各方面的性能,時間性能,空間性能。以此節約空間和時間。給定一個程序首先要分析其應有的數據結構。怎么存儲,怎么性能會比較好。“數據結構與算法”是一門很有用的科目,可是也是很令人頭疼的學科,這也鍛煉了我們迎難而上的毅力。當然學習數據結構與算法是建立在學習好計算機語言的基礎上的,學習編程是枯燥無味的,學據結構給我帶來更多的是思考的東西。
課程結束我總結了學習過程中遇到的困難,有時寫不出合條件的算法,在寫實驗報告時,有時就是將書上的源程序搬上去,對程序進行一些修改。針對這一情況我會慢慢改正。多加思考。
四、對課程教學的建議
1、課程課時較緊,課堂上的練習時間較少,講解的東西越多,頭腦有時就很混亂。
2、長期的ppt教學,會使產生疲勞,稍不留神,思維開了小差,就跟不上了。可以適當結合ppt和例題講解。通過課堂的習題講解,加深對知識點的掌握,同時對各知識點的運用有一個更為直觀和具體的認識。