資料結構與演算法課程總結

2021-10-17 02:38:59 字數 3158 閱讀 5092

合肥學院計科系

本學期在王教授的帶領下我們學習了《資料結構與演算法》,本課程歷時11個周。學現在我就對本課程的學習內容、學習體會以及對該門課程的教學建議等方面作下總結。

一、學習內容總結(按章節進行)

第一章交代了該學科的相關概念,如資料、資料元素、資料型別以及資料結構的定義。其中,資料結構包括邏輯結構、儲存結構和運算集合。邏輯結構分為四類:

集合型、線性、樹形和圖形結構,資料元素的儲存結構分為:順序儲存、鏈結儲存、索引儲存和雜湊儲存四類。然後,介紹了一些常用的資料運算。

最後著重介紹了演算法效能分析,包括演算法的時間效能分析和演算法的空間效能分析。本章中我對資料和資料結構的概念理解較為透徹,熟悉資料結構的邏輯結構和儲存結構。而對演算法的時間、空間效能分析較為模糊,尤其是時間效能分析需要加強。

第二章具體地介紹了順序表的概念、基本運算及其三個應用(查詢問題、排序問題以及字元處理問題)。基本運算有:初始化表、求表長、排序、元素的查詢、插入及刪除等。

元素查詢方法有:簡單順序查詢、二分查詢和分塊查詢。排序方法有:

直接插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序及歸併排序等。最後介紹了有關順序串的相關知識。在本章中我對於順序表的概念及其生成演算法理解的還算可以,並且熟悉了簡單順序查詢和二分查詢,對分塊查詢掌握的不是很好;排序問題中,由於選擇排序和氣泡排序在大一c語言課上已經學習過,經過本次再次學習,掌握的還不錯。

第三章介紹了鍊錶的節點結構、靜態與動態鍊錶的概念、鍊錶的基本運算(如求表長、插入、查詢、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向迴圈鍊錶的定義、結構、功能和基本演算法及相關應用。鍊錶中資料元素的儲存不一定是連續的,還可以占用任意的、不連續的或連續的物理儲存區域。與順序表相比,鍊錶的插入、刪除不需要移動元素,給演算法的效率帶來較大的提高。

單鏈表是一種簡單、常用的資料結構,所以應用單鏈表來完成多項式的相加、有序表的歸併及箱子排序等運算,其時間效能較好。雙向迴圈鍊錶的插入操作有前插和後插之分。其操作過程較單鏈表複雜、靈活,理解起來較為困難。

第四章介紹了堆疊及其相關應用。棧是一種運算受限制的線性結構。其基本運算方法與順序表和煉表運算方法基本相同,不同的是堆疊須遵循「先進後出」的規則,其插入和刪除操作都在在棧頂進行。

順序儲存和鏈結儲存的棧分別被稱為順序棧和鏈棧,不同的儲存結構也決定了各種運算實現的方法不同。書本中列出了兩種結構的相應演算法,如入棧、出棧等。本章重點介紹了棧的一些基本應用。

棧作為一類重要的資料結構,被廣泛應用於各種程式設計上。

第五章介紹了佇列的邏輯結構、儲存結構及基本運算,在此基礎上介紹了佇列的一些基本應用。佇列是一種運算受限制的線性結構。遵守「先進先出」的規則,其插入在隊尾、刪除在隊頭。

順序儲存和鏈結儲存的佇列分別被稱為順序佇列和鏈佇列。同時也為了節省儲存空間,於不斷有出隊運算,使得順序佇列出現了「假溢位」現象,為避免這種現象的發生,我們提出了迴圈佇列的概念。最後本章介紹了關於基數排序的問題,屬於佇列的典型應用。

第六章在介紹陣列的概念和儲存方法的基礎上,重點介紹了特殊矩陣的儲存及應用和廣義表的相關概念。其中,特殊矩陣包括對稱矩陣、三角矩陣、對角矩陣和稀疏矩陣,教材中分別詳細介紹了它們的儲存結構。稀疏矩陣的應用包括轉置和加法運算等。

最後介紹了廣義表的相關概念和儲存結構以及它的應用,課本中舉了m元多項式的表示問題。儘管廣義表是線性表的一種推廣,但其不是線性表。

第七章二叉樹的知識是重點內容。在介紹有關概念時,提到了二叉樹的性質以及兩種特

殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的兩種儲存結構:

順序儲存和鏈結儲存。二叉樹的遍歷演算法(遞迴演算法、先序、中序和後序遍歷非遞迴演算法)和線索二叉樹演算法。二叉樹中葉子節點個數統計,二叉樹的深度計算等,這些是本章學習的要點。

在此基礎上教材列出了有關二叉樹應用的問題:如表示式求值、哈弗曼樹和哈弗曼編碼問題、二叉排序樹和堆排序等問題,在學習是較難掌握。

第八章教材介紹了樹和森林的概念、遍歷和儲存結構,還有樹、森林和二叉樹的相互關係,樹或森林怎樣轉化成二叉樹,二叉樹又如何轉換為樹和森林等演算法。森林是樹的集合。任何乙個森林或一棵樹可以唯一的對應到一棵二叉樹上。

樹的常用儲存結構包括雙親表示法、孩子表示法和孩子兄弟表示法。本章還介紹了樹的一種典型應用——b樹,b樹是一種平衡的多路查詢樹。

第九章的主要知識點有:雜湊結構的概念及其儲存結構、雜湊函式、兩種衝突處理方法、線性探測雜湊和鏈位址雜湊的基本演算法以及雜湊結構的查詢效能分析。雜湊表是一種非常特殊的資料結構,表中各元素之間沒有直接的關係,雜湊和衝突處理是雜湊法中最重要的兩個概念。

雜湊通過某種函式確定節點關鍵字與節點儲存位址之間的關係。常用的雜湊函式有直接定址法、除留餘數法、數字分析法、平方取中法和摺疊法等。由於雜湊法的自身特點,衝突的發生是不可避免的。

第十章介紹了圖的概念及其應用,是教材的難點。圖的儲存結構的知識點有:鄰接矩陣、鄰接表、逆鄰接表、十字鍊錶和鄰接多重表。

圖的遍歷包括圖的深度優先搜尋遍歷和廣度優先搜尋遍歷。其餘知識點有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環圖及其應用。

有向無環圖重點理解aov網和拓撲排序及其演算法。

第十一章:略

學習體會

無論我們學習什麼課程,概念永遠是基礎,所有的知識都是建立在基礎概念之上的。我們要將概念熟記於心,然後構建知識框架。資料結構包括線性結構、樹形結構、圖狀結構或網狀結構。

線性結構包括線性表、棧、佇列、串、陣列、廣義表等,棧和佇列是操作受限的線性表,串的資料物件約束為字符集,陣列和廣義表是對線性表的擴充套件:表中的資料元素本身也是乙個資料結構。除了線性表以外,棧是重點,因為棧和遞迴緊密相連,遞迴是程式設計中很重要的一種工具。

樹狀結構中的重點自然是二叉樹和哈弗曼樹了。對於二叉樹的很多操作都是基於對二叉樹的遍歷,掌握了如何遍歷,很多問題也就迎刃而解了,比如對二叉樹結點的查詢訪問、統計二叉樹中葉子結點的數目、求二叉樹的深度等。哈弗曼編碼也有著很廣泛的應用。

對於圖狀結構,主要學習圖的儲存結構及圖的遍歷。對演算法的學習是學習資料結構的關鍵。要注重對演算法的掌握。

對於乙個演算法,如果我們不是很理解的話,可以手動將演算法走一遍,慢慢理解該演算法的思想。學習這門課程的最終目的,還是要學會如何設計演算法,這需要我們長期的練習和思考。

三、教學建議

1、希望平時階段考核的題目能夠按照考研的標準來出,讓我們適應考研的試卷。

2、希望老師在講完每章後,能增加一些隨堂小練習,加深我們對每一章的理解。

3、希望老師到下課的時候能準時下課,聽這門課真得很費腦力,給我們一點休息的時間。

以上是我對《資料結構與演算法》這門課程所作的課程總結。雖然這門課程結束了,但是,我還有很多內容沒有掌握牢固,我會繼續努力的。

演算法與資料結構

演算法 是按部就班地解決某個問題的方法,是對特定問題求解步驟的一種描述。偽碼語言是一種包括高階程式語言的3種基本控制結構 順序 選擇和迴圈 和自然語言成分的 物件導向 的語言。演算法的特徵 1 可行性 一是演算法中的每個步驟必須是能實現的 二是演算法執行的結果要能達到預期的目的。2 確定性 演算法的...

資料結構與演算法

課程設計報告 目錄一 問題描述1 二 資料結構1 三 演算法設計思想及流程圖1 四 源程式2 五 測試情況6 參考文獻6 一 問題描述 計算表示式的值 問題描述 對於給定的乙個表示式,表示式中可以包括常數 算術執行符和括號,編寫程式計算表示式的值。基本要求 從鍵盤輸入乙個正確的中綴表示式,將中綴表示...

課程名稱 演算法與資料結構

書卷多情似故人,晨昏憂樂每相親 于謙 algorithms and data structure 撰寫人 李睿審核人 張永 一 課程編號 205329 二 學時學分 56學時,其中授課48學時,上機8學時,3.5學分 三 先修課程 程式設計,離散數學 四 適合專業 電腦科學與技術 五 課程性質和任務...