在日常學(xué)習(xí)、工作或生活中,,大家總少不了接觸作文或者范文吧,,通過文章可以把我們那些零零散散的思想,聚集在一塊,。范文書寫有哪些要求呢,?我們怎樣才能寫好一篇范文呢?接下來小編就給大家介紹一下優(yōu)秀的范文該怎么寫,,我們一起來看一看吧,。
數(shù)據(jù)結(jié)構(gòu)與算法 課程篇一
一、使用說明
(一)課程性質(zhì)
《數(shù)據(jù)結(jié)構(gòu)》是一門專業(yè)基礎(chǔ)課,在計算機軟件的各個領(lǐng)域中均會使用到數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識,。本課程的先修課程為c程序設(shè)計或c++程序設(shè)計,。
(二)教學(xué)目的
學(xué)會從問題入手,分析研究計算機加工的數(shù)據(jù)結(jié)構(gòu)的特性,,以便為應(yīng)用所涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu),、存儲結(jié)構(gòu)及其相應(yīng)的操作算法,并初步掌握時間和空間分析技術(shù),。另一方面,,本課程的學(xué)習(xí)過程也是進行復(fù)雜程序設(shè)計的訓(xùn)練過程,要求學(xué)生會書寫符合軟件工程規(guī)范的文件,,編寫的程序代碼應(yīng)結(jié)構(gòu)清晰,、正確易讀,,能上機調(diào)試并排除錯誤,。
(三)教學(xué)時數(shù)
課堂講授每周4學(xué)時,18周,,共72學(xué)時,。
(四)教學(xué)方法
本課程將采用課堂講授及課堂討論相結(jié)合的交互式教學(xué)法,同時輔以必要的上機操作實踐,。
(五)面向?qū)I(yè)
計算機科學(xué)與技術(shù)專業(yè),。
二、教學(xué)內(nèi)容
第一章 緒論
(一)教學(xué)目的要求
介紹數(shù)據(jù)結(jié)構(gòu)的一些基本概念,,算法的時間復(fù)雜度和空間復(fù)雜度的分析方法,,抽象數(shù)據(jù)類型的定義和使用以及算法的描述方法。掌握數(shù)據(jù)結(jié)構(gòu)的一些基本概念,,掌握算法的時間復(fù)雜度和空間復(fù)雜度的分析方法,,了解抽象數(shù)據(jù)類型的定義和使用,了解算法的描述方法,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:數(shù)據(jù)結(jié)構(gòu)的一些基本概念:數(shù)據(jù),、數(shù)據(jù)元素、數(shù)據(jù)邏輯結(jié)構(gòu),、數(shù)據(jù)存儲結(jié)構(gòu),、數(shù)據(jù)類型、算法等,。抽象數(shù)據(jù)類型,。算法時間復(fù)雜度和空間復(fù)雜度的分析。
教學(xué)重點:有關(guān)數(shù)據(jù)結(jié)構(gòu)的各個名詞和術(shù)語的含義,,以及語句頻度和時間復(fù)雜度,、空間復(fù)雜度的估算。
教學(xué)難點:算法時間復(fù)雜度和空間復(fù)雜度的分析。
第一節(jié)
一,、非數(shù)值計算
二,、數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容的歷史演變
三、數(shù)據(jù)結(jié)構(gòu)研究范圍
第二節(jié)
一,、數(shù)據(jù)
二,、數(shù)據(jù)結(jié)構(gòu)
三、數(shù)據(jù)類型
四,、抽象數(shù)據(jù)類型
五,、多型數(shù)據(jù)類型
第三節(jié)
一、固有數(shù)據(jù)類型
抽象數(shù)據(jù)類型的表示與實現(xiàn)
基本概念和術(shù)語 什么是數(shù)據(jù)結(jié)構(gòu)
二,、數(shù)據(jù)抽象
三,、抽象數(shù)據(jù)類型的描述語言
第四節(jié)
一、算法
二,、算法設(shè)計的要求
三,、算法效率的度量
四、算法的存儲空間需求
(三)教學(xué)方法與形式
課堂講授,、多媒體課件,。
(四)教學(xué)時數(shù)
4學(xué)時。
第二章 線性表
(一)教學(xué)目的與要求
介紹線性表的基本概念和類型定義,,對順序表和單鏈表的常用操作方法及其程序?qū)崿F(xiàn),,循環(huán)鏈表和雙向鏈表的定義和它的插入、刪除等操作方法,。掌握線性表的基本概念和類型定義,;熟練掌握對順序表和單鏈表的常用操作方法及其程序?qū)崿F(xiàn);掌握循環(huán)鏈表和雙向鏈表的定義和它的插入,、刪除等操作方法,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:線性表的基本概念和類型定義,線性表的順序存儲結(jié)構(gòu),,線性表的鏈接存儲結(jié)構(gòu):(1)單鏈表的查找,、插入和刪除;(2)循環(huán)鏈表,;(3)雙向鏈表,。
教學(xué)重點:在順序表和鏈表上各種基本算法的實現(xiàn)及相關(guān)的時間性能分析。
教學(xué)難點:用所學(xué)的基本知識設(shè)計有效算法解決與線性表相關(guān)的應(yīng)用問題,。鏈表要分清鏈表中指針p和結(jié)點*p之間的對應(yīng)關(guān)系,,區(qū)分鏈表中的頭結(jié)點、頭指針以及循環(huán)鏈表,、雙向鏈表的特點等,。
第一節(jié)
一,、線性表的定義
二、線性表的基本操作
第二節(jié)
一,、順序表
二,、順序表上基本運算的實現(xiàn)
三、順序表應(yīng)用舉例
第三節(jié)
一,、線性鏈表
二,、循環(huán)鏈表
三、雙向鏈表
四,、靜態(tài)鏈表
第四節(jié) 一,、一元多項式的數(shù)學(xué)表示 二、一元多項式的計算機表示
三,、抽象數(shù)據(jù)類型:一元多項式的定義
四,、抽象數(shù)據(jù)類型:一元多項式的存儲結(jié)構(gòu)
五、抽象數(shù)據(jù)類型:一元多項式的基本操作算法實現(xiàn)
(三)教學(xué)方法與形式
一元多項式的表示及相加 線性表的鏈?zhǔn)酱鎯Ρ硎竞蛯崿F(xiàn) 線性表的順序存儲表示和實現(xiàn)
線性表的類型定義 算法和算法分析 課堂講授,、多媒體課件,。
(四)教學(xué)時數(shù)
8學(xué)時。
第三章 棧和隊列
(一)教學(xué)目的與要求
介紹棧和隊列的定義,,順序和鏈接存儲的棧和隊列的各種運算的方法及其程序?qū)崿F(xiàn),。掌握棧和隊列的定義,,熟練掌握順序和鏈接存儲的棧和隊列的各種運算的方法及其程序?qū)崿F(xiàn),。
(二)教學(xué)內(nèi)容
主要內(nèi)容:棧的類型定義,棧的順序存儲和鏈接存儲的表示,,在棧的順序存儲和鏈接存儲上進行各種棧操作的算法,,棧的應(yīng)用舉例,隊列的類型定義,,隊列的順序存儲(循環(huán)隊)和鏈接存儲表示及各種操作的實現(xiàn)算法,。
教學(xué)重點:棧和隊列在兩種存儲結(jié)構(gòu)上實現(xiàn)的基本運算。教學(xué)難點:遞歸的實現(xiàn),、循環(huán)隊列中對邊界條件的處理,。
第一節(jié)
一、抽象數(shù)據(jù)類型棧的定義
二,、棧的表示和實現(xiàn)
第二節(jié)
一,、數(shù)制轉(zhuǎn)換
二、括號匹配的檢驗
三,、表達式求值
第三節(jié)
一,、函數(shù)調(diào)用與棧
二、遞歸調(diào)用棧的變化
第四節(jié)
一,、抽象數(shù)據(jù)類型隊列的定義
二,、鏈隊列--隊列的鏈?zhǔn)奖硎竞蛯崿F(xiàn)
三,、循環(huán)隊列--隊列的順序表示和實現(xiàn)
第五節(jié)
一、優(yōu)先級隊列的概念
二,、優(yōu)先級隊列的存儲表示和實現(xiàn)
(三)教學(xué)方法與形式
課堂講授,、多媒體課件。
(四)教學(xué)時數(shù)
4學(xué)時,。
第四章 串
(一)教學(xué)目的與要求
介紹串的基本概念和操作,,串的存儲結(jié)構(gòu)以及基本操作的算法實現(xiàn)。掌握串的基本概念和操作,,掌握串的存儲結(jié)構(gòu)以及基本操作的算法實現(xiàn),。
(二)教學(xué)內(nèi)容
主要內(nèi)容:串的類型定義,串的表示和實現(xiàn),,正文模式匹配,,正文編輯——串操作應(yīng)用舉例串的類型定義。
教學(xué)重點:串類型定義中各基本操作的定義以及串的實現(xiàn)方法,。教學(xué)難點:利用串的基本操作來實現(xiàn)串的其它操作,。
優(yōu)先級隊列 隊列 棧與遞歸的實現(xiàn) 棧的應(yīng)用舉例
棧
第一節(jié)
一、串的定義
二,、串的基本操作
第二節(jié)
一,、定長順序存儲表示
二、堆分配存儲表示
三,、串的塊鏈存儲表示
四,、字符串操作的實現(xiàn)
第三節(jié)
二、模式匹配的一種改進算法
(三)教學(xué)方法與形式
課堂講授,、多媒體課件,。
(四)教學(xué)時數(shù)
4學(xué)時。
串的類型定義
串的表示和實現(xiàn)
字符串的模式匹配
一,、求子串位置的定位函數(shù)index(s,,t,pos)
第五章 數(shù)組和廣義表
(一)教學(xué)目的
介紹數(shù)組的基本概念和基本操作的算法實現(xiàn),;稀疏矩陣的定義和各種存儲結(jié)構(gòu),,稀疏矩陣的轉(zhuǎn)置和相加的方法并了解其算法;廣義表的定義,、存儲結(jié)構(gòu)和求廣義表的長度及深度的算法,,建立廣義表和輸出廣義表的方法并了解其算法。掌握數(shù)組的基本概念和基本操作的算法實現(xiàn),;掌握稀疏矩陣的定義和各種存儲結(jié)構(gòu),,掌握稀疏矩陣的轉(zhuǎn)置和相加的方法并了解其算法;掌握廣義表的定義,、存儲結(jié)構(gòu)和求廣義表的長度及深度的算法,,掌握建立廣義表和輸出廣義表的方法并了解其算法,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:稀疏矩陣的定義、存儲和運算,,廣義表的定義,、存儲和運算串的類型定義。教學(xué)重點:特殊矩陣的壓縮存儲,,以及稀疏矩陣的三元組順序表示,。教學(xué)難點:特殊矩陣的壓縮存儲,以及稀疏矩陣的三元組順序表示,。
第一節(jié) 第二節(jié)
一,、數(shù)組的存儲方式
二、數(shù)組元素存儲位置的計算
三,、基本操作的實現(xiàn)
第三節(jié)
一,、特殊矩陣
二、稀疏矩陣
第四節(jié)
一,、廣義表的基本概念
二,、廣義表的三個重要結(jié)論
第五節(jié)
一、頭尾鏈表存儲表示
二,、擴展線性鏈表存儲表示
第六節(jié)
廣義表的遞歸算法 廣義表的存儲表示 廣義表的定義 矩陣的壓縮存儲 數(shù)組類型 數(shù)組的順序表示和實現(xiàn)
一,、求廣義表的深度
二、復(fù)制廣義表
三,、建立廣義表的存儲結(jié)構(gòu)
(三)教學(xué)方法與形式
課堂講授,、多媒體課件。
(四)教學(xué)時數(shù)
6學(xué)時,。
第六章 樹和二叉樹
(一)教學(xué)目的與要求
介紹樹的定義,、性質(zhì)、存儲結(jié)構(gòu)及遍歷算法,,握二叉樹的各種遍歷方法及其實現(xiàn),二叉樹的其他操作方法及實現(xiàn),,樹,、森林和二叉樹的轉(zhuǎn)換方法,哈夫曼樹的定義和構(gòu)造哈夫曼樹的方法,,哈夫曼樹編碼的方法,。掌握樹的定義、性質(zhì),、存儲結(jié)構(gòu)及遍歷算法,,熟練掌握二叉樹的各種遍歷方法及其實現(xiàn),掌握二叉樹的其他操作方法及實現(xiàn),,掌握樹,、森林和二叉樹的轉(zhuǎn)換方法,,掌握哈夫曼樹的定義和構(gòu)造哈夫曼樹的方法,了解哈夫曼樹編碼的方法,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:樹的定義,、性質(zhì)和表示方法,二叉樹的定義,、性質(zhì)和存儲結(jié)構(gòu),,二叉樹的各種遍歷方法及實現(xiàn),建立二叉樹,、輸出二叉樹,、求二叉樹深度等的操作方法及實現(xiàn),樹的存儲結(jié)構(gòu),,進行先根遍歷,、后根遍歷和按層遍歷的方法及實現(xiàn),進行樹與二叉樹的轉(zhuǎn)換方法,,哈夫曼樹的定義,、構(gòu)造哈夫曼樹的方法及哈夫曼編碼的方法。
教學(xué)重點:二叉樹和樹的遍歷及其應(yīng)用,。
教學(xué)難點:實現(xiàn)二叉樹和樹的各種操作的遞歸算法,。
第一節(jié)
一、樹的定義
二,、森林的定義
三,、樹的抽象數(shù)據(jù)類型定義
第二節(jié) 一、二叉樹的定義 二,、二叉樹的性質(zhì) 三,、二叉樹的存儲結(jié)構(gòu)
第三節(jié)
一、遍歷二叉樹
二,、線索二叉樹
第四節(jié)
一,、樹的存儲結(jié)構(gòu)
二、森林與二叉樹的轉(zhuǎn)換
三,、樹和森林的遍歷
第五節(jié)
一,、最優(yōu)二叉樹(赫夫曼樹)
二、赫夫曼編碼
(三)教學(xué)方法與形式
課堂講授,、多媒體課件,。
(四)教學(xué)時數(shù)
10學(xué)時。
最優(yōu)樹和赫夫曼編碼
樹和森林
遍歷二叉樹和線索二叉樹
二叉樹
樹的定義和基本術(shù)語
第七章 圖
(一)教學(xué)目的與要求
介紹圖的定義和術(shù)語,;圖的存儲結(jié)構(gòu)及深度和廣度優(yōu)先搜索方法及其實現(xiàn),;圖的生成樹的概念,求圖的最小生成樹的普里姆算法和克魯斯卡爾算法并了解其實現(xiàn)算法,;拓撲排序的方法并了解其實現(xiàn)算法,;計算關(guān)鍵路徑的方法及其實現(xiàn)算法,。掌握圖的定義和術(shù)語;熟練掌握圖的存儲結(jié)構(gòu)及深度和廣度優(yōu)先搜索方法及其實現(xiàn),;掌握圖的生成樹的概念,,掌握求圖的最小生成樹的普里姆算法和克魯斯卡爾算法并了解其實現(xiàn)算法;掌握拓撲排序的方法并了解其實現(xiàn)算法,;了解計算關(guān)鍵路徑的方法并了解其實現(xiàn)算法,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:圖的定義和術(shù)語,圖的鄰接矩陣,、鄰接表和邊集數(shù)組表示,,圖的深度和廣度優(yōu)先搜索遍歷,圖的生成樹和最小生成樹,,拓撲排序,。
教學(xué)重點:圖在鄰接矩陣與鄰接表上實現(xiàn)的遍歷算法(dfs和bfs)。教學(xué)難點:基于遍歷算法的應(yīng)用,。
第一節(jié)
一,、圖的定義
二、無向圖
三,、有向圖
四,、連通圖
五、生成樹
第二節(jié)
一,、數(shù)組表示法
二,、鄰接表 三、十字鏈表
四,、鄰接多重表
第三節(jié)
一,、深度優(yōu)先搜索
二、廣度優(yōu)先搜索
三,、連通分量
第四節(jié)
一,、kruskal算法
二、prim算法
第五節(jié)
一,、拓撲排序
二,、關(guān)鍵路徑
第六節(jié)
一、從某個源點到其余各項點的最短路徑
二,、每一對頂點之間的最短路徑
(三)教學(xué)方法與形式
課堂講授、多媒體課件,。
(四)教學(xué)時數(shù)
12學(xué)時,。
最短路徑 有向無環(huán)圖及其應(yīng)用
最小生成樹 圖的遍歷 圖的存儲表示 圖的定義和術(shù)語
第八章 查找表
(一)教學(xué)目的與要求
介紹順序表查找和有序表查找的方法及實現(xiàn);二叉排序樹和平衡二叉樹的定義,、對二叉排序樹和平衡二叉樹進行插入,、刪除和查找的方法和實現(xiàn),。哈希表的定義,構(gòu)造哈希函數(shù)的多種方法,,以及處理沖突的方法,;b樹的定義,查找,、插入和刪除元素的方法,。熟練掌握順序表查找和有序表查找的方法及實現(xiàn);掌握二叉排序樹和平衡二叉樹的定義,、熟練掌握對二叉排序樹和平衡二叉樹進行插入,、刪除和查找的方法和實現(xiàn)。掌握哈希表的定義,,構(gòu)造哈希函數(shù)的多種方法,,以及處理沖突的方法;了解b樹的定義,,查找,、插入和刪除元素的方法。
(二)教學(xué)內(nèi)容
主要內(nèi)容:順序查找和二分查找,,索引查找和分塊查找,,散列查找,動態(tài)查找樹表,。教學(xué)重點:順序查找,、二分查找、二叉排序樹上查找以及散列表上查找的基本思想和算法實現(xiàn),。
教學(xué)難點:二叉排序樹的刪除算法,。
第一節(jié)
一、順序表的查找
二,、有序表的查找
三,、靜態(tài)樹表的查找
四、索引順序表的查找
第二節(jié) 一,、二叉排序樹
二,、平衡二叉樹
三、動態(tài)的m路搜索樹
四,、b樹和b+樹基本概念
第三節(jié)
一,、什么是哈希表
二、哈希函數(shù)的構(gòu)造方法
三,、處理沖突的方法
四,、哈希表的查找及其分析
(三)教學(xué)方法與形式
課堂講授、多媒體課件。
(四)教學(xué)時數(shù)
10學(xué)時,。
第九章 內(nèi)部排序
(一)教學(xué)目的與要求
介紹插入排序,、交換排序、選擇排序,、快速排序,、歸并排序、基數(shù)排序的方法及其實現(xiàn),,快速排序,、堆排序、二路歸并排序的方法及其實現(xiàn),,各種排序方法的穩(wěn)定性,、時間復(fù)雜度和空間復(fù)雜度。掌握插入排序,、交換排序,、選擇排序、快速排序,、歸并排序,、基數(shù)排序的方法及其實現(xiàn),熟練掌握快速排序,、堆排序,、二路歸并排序的方法及其實現(xiàn),掌握各種排序方法的穩(wěn)定性,、時間復(fù)雜度和空間復(fù)雜度,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:排序的概念,直接插入排序,,冒泡排序和快排序,,直接選擇排序和堆排序,歸并排序,。
哈希表 動態(tài)查找表 靜態(tài)查找表 教學(xué)重點:插入排序(直接插入,、折半插入)、交換排序(冒泡,、快速排序),、選擇排序(直接選擇、堆),、2-路歸并排序,。
教學(xué)難點:快速排序partition算法的應(yīng)用和堆的調(diào)整。
第一節(jié)
一,、穩(wěn)定的排序方法
二,、內(nèi)部/外部排序
三,、內(nèi)部排序種類
四,、排序中的基本操作
五,、排序數(shù)據(jù)的存儲方式
第二節(jié)
一、直接插入排序
二,、其他插入排序
三,、希爾排序
第三節(jié)
一、起泡排序算法
二,、快速排序算法
第四節(jié)
一,、簡單選擇排序
二、樹形選擇排序
三,、堆排序
第五節(jié) 第六節(jié)
一,、多關(guān)鍵字的排序
二、鏈?zhǔn)交鶖?shù)排序
第七節(jié)
(三)教學(xué)方法與形式
課堂講授,、多媒體課件,。
(四)教學(xué)時數(shù)
10學(xué)時。
第十章 文件
(一)教學(xué)目的與要求
介紹文件和記錄的基本概念以及基本操作,。掌握文件和記錄的基本概念以及基本操作,。
(二)教學(xué)內(nèi)容
主要內(nèi)容:基本概念,順序文件,,索引文件,,索引順序文件,散列文件,,多關(guān)鍵碼文件,。教學(xué)重點:各種文件的結(jié)構(gòu)特點及其適用場合。教學(xué)難點:各種文件的結(jié)構(gòu)特點及其適用場合,。
第一節(jié)
一,、文件及其類別
二、記錄的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)
三,、文件的操作
四,、文件的物理結(jié)構(gòu)
第二節(jié)
一、順序文件的定義
順序文件 基本概念
各種排序方法的綜合比較
歸并排序法 基數(shù)排序 選擇排序法 交換排序法 插入排序 排序的定義和方法
二,、順序文件的優(yōu)缺點
第三節(jié)
一,、索引文件的定義
二、索引文件的特點
第四節(jié)
一,、isam文件
二,、vsam文件
第五節(jié)
一、散列文件的定義
二,、散列文件的特點
第六節(jié)
一,、多重表文件
二,、倒排文件
(三)教學(xué)方法與形式
課堂講授、多媒體課件,。
(四)教學(xué)時數(shù)
4學(xué)時,。
三、考核方式
本課程的考核采用閉卷考試的方式,,課程的總評成績由平時成績,、實驗成績和期末考試成績?nèi)糠纸M成,其中平時成績占總評成績的10%,,實驗成績占總評成績的30%,,期末考試成績占總評成績的60%。
四,、教材選用
1,、殷人昆,陶永雷,,謝若陽等:《數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++語言描述)》,,清華大學(xué)出版社,2007.6年第二版,。
2,、嚴(yán)蔚敏,吳偉民:《數(shù)據(jù)結(jié)構(gòu)(c語言版)》 及《數(shù)據(jù)結(jié)構(gòu)題集(c語言版)》,,清華大學(xué)出版社,,2003年第一版。
多關(guān)鍵碼文件 散列文件 isam文件和vsam文件
索引文件
數(shù)據(jù)結(jié)構(gòu)與算法 課程篇二
教學(xué)大綱
數(shù)據(jù)結(jié)構(gòu)與算法(data structures)
計算機技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標(biāo)志,,并逐步滲透到人類生活的各個領(lǐng)域,。隨著計算機硬件的發(fā)展,對計算機軟件的發(fā)展也提出了越來越高的要求,。由于軟件的核心是算法,,而算法實際上是對加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對提高編程能力和設(shè)計高性能的算法是至關(guān)重要的,。
非數(shù)值計算問題的數(shù)學(xué)模型不再是傳統(tǒng)的數(shù)學(xué)方程問題,,而是諸如表、樹,、圖之類的數(shù)據(jù)結(jié)構(gòu),。因此,簡單地說,,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題的學(xué)科,,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法,。
一,、教學(xué)目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),;
教學(xué)要求在每章教學(xué)內(nèi)容給出,大體上為三個層次:了解,、掌握和熟練掌握,。他們的含義大致為:了解是正確理解概念,掌握是學(xué)會所學(xué)知識,,熟練掌握就是運用所學(xué)知識解決實際問題,。
教學(xué)目的為:了解算法對于程序設(shè)計的重要性 ; 學(xué)習(xí)掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實現(xiàn)方法,,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用算法的設(shè)計。了解算法分析方法,。
二,、教學(xué)重點與難點--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法,。
1,、鏈表插入、刪除運算的算法,。算法時間復(fù)雜度
2,、后綴表達式的算法,數(shù)制的換算
利用本章的基本知識設(shè)計相關(guān)的應(yīng)用問題
3,、循環(huán)隊列的特點及判斷溢出的條件
利用隊列的特點設(shè)計相關(guān)的應(yīng)用問題
4,、串的模式匹配運算算法
5、二叉樹遍歷算法的設(shè)計
利用二叉樹遍歷算法,,解決簡單應(yīng)用問題 哈夫曼樹的算法
6,、圖的遍歷
最小生成樹
最短路徑
7、二叉排序樹查找
平衡樹二叉樹
8,、堆排序
快速排序 歸并排序
三,、教學(xué)方法與手段-充分利用多媒體教學(xué)工具,配合黑板上的教學(xué)內(nèi)容較難部分的算法實現(xiàn)過程演義
四,、教學(xué)內(nèi)容,、目標(biāo)與學(xué)時分配
教學(xué)內(nèi)容 教學(xué)目標(biāo) 課時分配
1、緒論
數(shù)據(jù)結(jié)構(gòu)的內(nèi)容
邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)
算法和算法分析
2,、線性表
線性表的定義與運算
線性表的順序存儲
線性表的鏈?zhǔn)酱鎯?/p>
3,、棧
棧的定義與運算
棧存儲和實現(xiàn)
棧的應(yīng)用舉例
4、隊列
隊列的定義與基本運算
隊列的存儲與實現(xiàn)
隊列的應(yīng)用舉例
5,、串
串的定義與基本運算
串的表示與實現(xiàn)
串的基本運算
6,、樹和二叉樹
樹的定義和術(shù)語
二叉樹樹的基本概念和術(shù)語 遍歷二叉數(shù)和線索二叉樹
二叉樹的轉(zhuǎn)換
二叉樹的應(yīng)用
哈夫曼樹及其應(yīng)用
7、圖
圖的定義和術(shù)語
圖的存儲結(jié)構(gòu)
圖的遍歷算法
圖的連通性
8,、查找
查找的基本概念與靜態(tài)查找 動態(tài)查找
哈希表
了解
了解
掌握
熟練掌握順序表存儲地址的計算
掌握單鏈表的結(jié)構(gòu)特點和基本運算
掌握雙鏈表的結(jié)構(gòu)特點和基本運算
掌握棧的定義與運算
掌握棧的存儲與實現(xiàn)
熟練掌握棧的各種實際應(yīng)用
掌握隊列的定義與基本運算
熟練掌握隊列的存儲與實現(xiàn)
掌握循環(huán)隊列的特征和基本運算
了解串的邏輯結(jié)構(gòu)
掌握串的存儲結(jié)構(gòu)
熟練掌握串的基本運算
了解
了解二叉樹
熟練掌握二叉樹定義和存儲結(jié)構(gòu)
了解二叉樹的遍歷算法
掌握
掌握哈夫曼的建立及編碼
了解
了解
熟練掌握
熟練掌握
了解
熟練掌握
了解哈希表與哈希方法
4學(xué)時
1學(xué)時
1學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
12學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
4學(xué)時
2學(xué)時
2學(xué)時
9,、排序
12學(xué)時 插入排序
熟練掌握基本思想
3學(xué)時 快速排序
了解各種內(nèi)部排序方法和特點
3學(xué)時 選擇排序
掌握
2學(xué)時 各種排序方法比較
掌握
2學(xué)時
實驗內(nèi)容 實驗?zāi)繕?biāo) 課時分配 算法編程實驗:
1,、用指針方式編寫程序 復(fù)習(xí)c(c++)語言指針、結(jié)構(gòu)體等的用法
2,、對單鏈表進行遍歷
鏈表的描述與操作實現(xiàn)
3,、棧及其操作
描述方法及操作
4、編寫串子系統(tǒng)1 串的特點及順序定長存儲,、操作,、查找
5、編寫串子系統(tǒng) 2 串的特點及順序定長存儲,、操作,、查找
6、編寫樹子系統(tǒng)1 二叉樹的特點及存儲方式,、創(chuàng)建,、顯示、遍歷等
7,、編寫樹子系統(tǒng)2 二叉樹的特點及存儲方式,、創(chuàng)建、顯示,、遍歷等
8,、圖子系統(tǒng)
圖的鄰接矩陣的存儲、遍歷,、廣度/深度優(yōu)先搜索
9,、查找子系統(tǒng)
理解查找基本算法、平均查找長度,、靜態(tài),、動態(tài)查找等
五、考試范圍與題型
1,、考試范圍與分?jǐn)?shù)比例
1)緒論
12% 2)線性表
17% 3)棧
7% 4)隊列
6% 5)串
4% 6)樹和二叉樹
14% 7)圖
15% 8)查找
4% 9)排序
21%
2,、考試題型與分?jǐn)?shù)比例
1)名詞解釋
18% 2)判斷對錯
16% 3)填空
16% 4)單項選擇
18% 5)應(yīng)用
32%
六、教材與參考資料
1,、教材: 實用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(譚浩強)中國鐵道出版社
2,、參考資料: 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)實用教程(徐孝凱)清華大學(xué)出版社
(撰寫人:
,審核人: 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時)
數(shù)據(jù)結(jié)構(gòu)與算法 課程篇三
《數(shù)據(jù)結(jié)構(gòu)》教學(xué)大綱
一,、課程基本信息
課程名稱:數(shù)據(jù)結(jié)構(gòu)
總學(xué)時:64(理論課內(nèi)學(xué)時48,,上機課內(nèi)學(xué)時16)課程設(shè)計:24 課程類型:必修課
考試形式:半開卷考試 講課對象:計算機本科
建議教材:《數(shù)據(jù)結(jié)構(gòu)》(c語言版)陳明 編著 清華大學(xué)出版社
課程簡介:數(shù)據(jù)結(jié)構(gòu)課程介紹如何組織各種數(shù)據(jù)在計算機中的存儲、傳遞和轉(zhuǎn)換,。內(nèi)容包括:數(shù)組,、鏈接表、棧和隊列,、串,、樹與森林,、圖、排序,、查找,、索引與散列結(jié)構(gòu)等。課程以結(jié)構(gòu)化程序設(shè)計語言c語言作為算法的描述工具,,強化數(shù)據(jù)結(jié)構(gòu)基本知識和結(jié)構(gòu)化程序設(shè)計基本能力的雙基訓(xùn)練,。為后續(xù)計算機專業(yè)課程的學(xué)習(xí)打下堅實的基礎(chǔ)。
二,、課程的教學(xué)目標(biāo)
“數(shù)據(jù)結(jié)構(gòu)”是計算機相關(guān)專業(yè)的一門重要專業(yè)基礎(chǔ)課,,是計算機學(xué)科的公認(rèn)主干課。課程內(nèi)容由數(shù)據(jù)結(jié)構(gòu)和算法分析初步兩部分組成,。
數(shù)據(jù)結(jié)構(gòu)是針對處理大量非數(shù)值性程序問題而形成的一門學(xué)科,,內(nèi)涵豐富、應(yīng)用范圍廣,。它既有完整的學(xué)科體系和學(xué)科深度,又有較強的實踐性,。通過課程的學(xué)習(xí),,應(yīng)使學(xué)生理解和掌握各種數(shù)據(jù)結(jié)構(gòu)(物理結(jié)構(gòu)和邏輯結(jié)構(gòu))的概念及其有關(guān)的算法;熟悉并了解目前常用數(shù)據(jù)結(jié)構(gòu)在計算機諸多領(lǐng)域中的基本應(yīng)用,。
算法分析強調(diào)最基本的算法設(shè)計技術(shù)和分析方法,。要求學(xué)生從算法和數(shù)據(jù)結(jié)構(gòu)的相互依存關(guān)系中把握應(yīng)用算法設(shè)計的藝術(shù)和技能。
經(jīng)過上機實習(xí)和課程設(shè)計的訓(xùn)練,,使學(xué)生能夠編制,、調(diào)試具有一定難度的中型程序,;以培養(yǎng)良好的軟件工程習(xí)慣和面向?qū)ο蟮能浖季S方法。
“數(shù)據(jù)結(jié)構(gòu)”的前序課是《離散數(shù)學(xué)》、《c語言程序設(shè)計與算法初步》,。
三、理論教學(xué)內(nèi)容的基本要求及學(xué)時分配
1,、序論(2學(xué)時)學(xué)習(xí)目標(biāo):熟悉各類文件的特點,,構(gòu)造方法以及如何實現(xiàn)檢索,插入和刪除等操作,。
重點與難點:本章無,。
知識點:數(shù)據(jù)、數(shù)據(jù)元素,、數(shù)據(jù)結(jié)構(gòu),、數(shù)據(jù)類型、抽象數(shù)據(jù)類型,、算法及其設(shè)計原則,、時間復(fù)雜度,、空間復(fù)雜度。
2,、線性表(4學(xué)時)
學(xué)習(xí)目標(biāo):
(1)了解線性表的邏輯結(jié)構(gòu)特性是數(shù)據(jù)元素之間存在著線性關(guān)系,,在計算機中表示這種關(guān)系的兩類不同的存儲結(jié)構(gòu)是順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。用前者表示的線性表簡稱為順序表,,用后者表示的線性表簡稱為鏈表,;
(2)熟練掌握這兩類存儲結(jié)構(gòu)的描述方法以及線性表的基本操作在這兩種存儲結(jié)構(gòu)上的實現(xiàn);
(3)能夠從時間和空間復(fù)雜度的角度綜合比較線性表兩種存儲結(jié)構(gòu)的不同特點及其適用場合,;
(4)結(jié)合線性表類型的定義增強對抽象數(shù)據(jù)類型的理解,。
重點與難點:鏈表是本章的重點和難點。扎實的指針操作和內(nèi)存動態(tài)分配的編程技術(shù)是學(xué)好本章的基本要求,,分清鏈表中指針 p 和結(jié)點 *p 之間的對應(yīng)關(guān)系,,區(qū)分鏈表中的頭結(jié)點、頭指針和首元結(jié)點的不同所指以及循環(huán)鏈表,、雙向鏈表的特點等,。
知識點:線性表、順序表,、鏈表,、有序表。
3,、棧和隊列(4學(xué)時)
學(xué)習(xí)目標(biāo):
(1)掌握棧和隊列這兩種抽象數(shù)據(jù)類型的特點,,并能在相應(yīng)的應(yīng)用問題中正確選用它們;
(2)熟練掌握棧類型的兩種實現(xiàn)方法,;
(3)熟練掌握循環(huán)隊列和鏈隊列的基本操作實現(xiàn)算法,;(4)理解遞歸算法執(zhí)行過程中棧的狀態(tài)變化過程。
重點與難點:棧和隊列是在程序設(shè)計中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),,因此本章的學(xué)習(xí)重點在于掌握這兩種結(jié)構(gòu)的特點,,以便能在應(yīng)用問題中正確使用。
知識點:順序棧,、鏈棧,、循環(huán)隊列、鏈隊列,。
4,、串(2學(xué)時)
學(xué)習(xí)目標(biāo):(1)理解串類型定義中各基本操作的特點,并能正確利用它們進行串的其它操作,;
(2)理解串類型的各種存儲表示方法,;(3)理解串匹配的各種算法。
重點和難點:相對于其它各個知識點而言,本章非整個課程的重點,,鑒于串已是多數(shù)高級語言中已經(jīng)實現(xiàn)的數(shù)據(jù)類型,,因此本章重點僅在于了解串類型定義中各基本操作的定義以及串的實現(xiàn)方法,并學(xué)會利用這些基本操作來實現(xiàn)串的其它操作,。本章的難點是理解實現(xiàn)串匹配的kmp算法的思想,。
知識點:串的類型定義、串的存儲表示,、串匹配,、kmp算法。
5,、數(shù)組和廣義表(4學(xué)時)
學(xué)習(xí)目標(biāo):
(1)理解數(shù)組類型的特點及其在高級編程語言中的存儲表示和實現(xiàn)方法,,并掌握數(shù)組在“以行為主”的存儲表示中的地址計算方法;
(2)掌握特殊矩陣的存儲壓縮表示方法,;
(3)理解稀疏矩陣的兩類存儲壓縮方法的特點及其適用范圍,,領(lǐng)會以三元組表示稀疏矩陣時進行矩陣運算所采用的處理方法。
重點和難點:本章重點是學(xué)習(xí)數(shù)組類型的定義及其存儲表示,。
知識點:數(shù)組的類型定義,、數(shù)組的存儲表示、特殊矩陣的壓縮存儲表示方法,、隨機稀疏矩陣的壓縮存儲表示方法,。
6、樹和二叉樹(8學(xué)時)
學(xué)習(xí)目標(biāo):
(1)領(lǐng)會樹和二叉樹的類型定義,,理解樹和二叉樹的結(jié)構(gòu)差別;(2)熟記二叉樹的主要特性,,并掌握它們的證明方法,;
(3)熟練掌握二叉樹的各種遍歷算法,并能靈活運用遍歷算法實現(xiàn)二叉樹的其它操作,;
(4)理解二叉樹的線索化過程以及在中序線索化樹上找給定結(jié)點的前驅(qū)和后繼的方法,;
(5)熟練掌握二叉樹和樹的各種存儲結(jié)構(gòu)及其建立的算法;(6)學(xué)會編寫實現(xiàn)樹的各種操作的算法,;
(7)了解最優(yōu)樹的特性,,掌握建立最優(yōu)樹和赫夫曼編碼的方法。
重點和難點:二叉樹和樹的遍歷及其應(yīng)用是本章的學(xué)習(xí)重點,,而編寫實現(xiàn)二叉樹和樹的各種操作的遞歸算法也恰是本章的難點所在,。
知識點:樹的類型定義、二叉樹的類型定義,、二叉樹的存儲表示,、二叉樹的遍歷以及其它操作的實現(xiàn)、線索二叉樹,、樹和森林的存儲表示,、樹和森林的遍歷以及其它操作的實現(xiàn),、最優(yōu)樹和赫夫曼編碼。
7,、圖(8學(xué)時)
學(xué)習(xí)目標(biāo):
(1)領(lǐng)會圖的類型定義,;
(2)熟悉圖的各種存儲結(jié)構(gòu)及其構(gòu)造算法,了解各種存儲結(jié)構(gòu)的特點及其選用原則,;
(3)熟練掌握圖的兩種遍歷算法,;(4)理解各種圖的應(yīng)用問題的算法。
重點和難點:圖的應(yīng)用極為廣泛,,而且圖的各種應(yīng)用問題的算法都比較經(jīng)典,,因此本章重點在于理解各種圖的算法及其應(yīng)用場合。
知識點:圖的類型定義,、圖的存儲表示,、圖的深度優(yōu)先搜索遍歷和圖的廣度優(yōu)先搜索遍歷、無向網(wǎng)的最小生成樹,、最短路徑,、拓撲排序、關(guān)鍵路徑,。
8,、查找(6學(xué)時)
學(xué)習(xí)目標(biāo):
(1)理解“查找表”的結(jié)構(gòu)特點以及各種表示方法的適用性;(2)熟練掌握以順序表或有序表表示靜態(tài)查找表時的查找方法,;
(3)熟悉靜態(tài)查找樹的構(gòu)造方法和查找算法,,理解靜態(tài)查找樹和折半查找的關(guān)系;
(4)熟練掌握二叉查找樹的構(gòu)造和查找方法,;(5)理解二叉平衡樹的構(gòu)造過程,;
(6)熟練掌握哈希表的構(gòu)造方法,深刻理解哈希表與其它結(jié)構(gòu)的表的實質(zhì)性的差別,;
(7)掌握描述查找過程的判定樹的構(gòu)造方法,,以及按定義計算各種查找方法在等概率情況下查找成功時的平均查找長度。
重點和難點:本章重點在于理解查找表的結(jié)構(gòu)特點及其各種表示方法的特點和適用場合,。
知識點:順序表,、有序表、索引順序表,、靜態(tài)查找樹,、二叉查找樹、二叉平衡樹,、哈希表,。
9、內(nèi)部排序(6學(xué)時)
學(xué)習(xí)目標(biāo):
(1)理解排序的定義和各種排序方法的特點,并能加以靈活應(yīng)用,。排序方法有不同的分類方法,,基于“關(guān)鍵字間的比較”進行排序的方法可以按排序過程所依據(jù)的不同原則分為插入排序、交換排序,、選擇排序,、歸并排序和計數(shù)排序等五類;
(2)掌握各種排序方法的時間復(fù)雜度的分析方法,。能從“關(guān)鍵字間的比較次數(shù)”分析排序算法的平均情況和最壞情況的時間性能,。按平均時間復(fù)雜度劃分,內(nèi)部排序可分為三類:o(n2)的簡單排序方法,,o(n*logn)的高效排序方法和o(d*n)的基數(shù)排序方法,;
(3)理解排序方法“穩(wěn)定”或“不穩(wěn)定”的含義,弄清楚在什么情況下要求應(yīng)用的排序方法必須是穩(wěn)定的,。
重點和難點:希爾排序,、快速排序、堆排序和歸并排序等高效方法是本章的學(xué)習(xí)重點和難點,。
知識點:排序,、直接插入排序、折半插入排序,、表插入排序,、希爾排序、起泡排序,、快速排序,、簡單選擇排序、堆排序,、2-路歸并排序,、基數(shù)排序、排序方法的綜合比較,。
10、文件(4學(xué)時)
學(xué)習(xí)目標(biāo):熟悉各類文件的特點,,構(gòu)造方法以及如何實現(xiàn)檢索,,插入和刪除等操作。
重點和難點:本章重點在于了解各種文件的結(jié)構(gòu)特點及其適用場合,。知識點:順序文件,、索引文件、b-樹,、b+樹,、索引順序文件、vsam文件、散列文件,、多關(guān)鍵字文件,。
四、實驗教學(xué)內(nèi)容的基本要求及學(xué)時分配
1,、線性表(1學(xué)時)實驗一 順序表的應(yīng)用 實驗二 鏈表的應(yīng)用
要求:理解線性表的定義及其運算,;理解順序表和鏈表的定義,組織形式,,結(jié)構(gòu)特征和類型說明,;掌握在這兩種表上實現(xiàn)的插入,刪除和按值查找的算法,;了解循環(huán)鏈表,,雙(循環(huán))鏈表的結(jié)構(gòu)特點和在其上施加的插入,刪除等操作,。
2,、棧(0.5學(xué)時)實驗三 棧的應(yīng)用
要求:理解棧的定義,特征及在其上所定義的基本運算,;掌握在兩種存儲結(jié)構(gòu)上對棧所施加的基本運算的實現(xiàn),。
3、隊列(0.5學(xué)時)實驗四 隊列的應(yīng)用
要求:理解隊列的定義,,特征及在其上所定義的基本運算,;掌握在兩種存儲結(jié)構(gòu)上對隊列所施加的基本運算的實現(xiàn)。
4,、串(0.5學(xué)時)實驗五 串的應(yīng)用
要求:了解串的定義,;理解和領(lǐng)會串的存儲方式;掌握常用的串運算,。
5,、數(shù)組和廣義表(0.5學(xué)時)實驗六 稀疏矩陣的應(yīng)用
要求:理解多維數(shù)組的結(jié)構(gòu)特點和在內(nèi)存中的兩種順序存儲方式;理解并掌握矩陣和特殊矩陣元素在存儲區(qū)中地址的計算,;領(lǐng)會稀疏矩陣的壓縮方式和簡單運算,;了解廣義表的定義和基本運算。
6,、樹與二叉樹(4學(xué)時)實驗七 樹與二叉樹的應(yīng)用
要求:理解樹的定義,,術(shù)語;領(lǐng)會并掌握樹的各種存儲結(jié)構(gòu),;熟練掌握森林與二叉樹間的相互轉(zhuǎn)換,;領(lǐng)會樹和森林的遍歷;了解樹的簡單應(yīng)用,。深刻理解二叉樹的定義,,性質(zhì)及其存儲方法,;熟練掌握二叉樹的二叉鏈表存儲方式,結(jié)點結(jié)構(gòu)和類型定義,;理解并掌握二叉樹的三種遍歷算法,;掌握二叉樹的線索化方法;靈活運用二叉樹的遍歷方法解決相關(guān)的應(yīng)用問題,。
7,、圖(3學(xué)時)實驗八 圖的應(yīng)用
要求:理解圖的基本概念及術(shù)語;掌握圖的兩種存儲結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法,;熟練掌握圖的兩種遍歷(深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷)的算法思想,,步驟,并能列出在兩種存儲結(jié)構(gòu)上按上述兩種遍歷算法得到的序列,;理解最小生成樹的概念,,能按prim算法構(gòu)造最小生成樹;領(lǐng)會并掌握拓撲排序,,關(guān)鍵路徑,,最短路徑的算法思想。
8,、查找(3學(xué)時)實驗九 順序查找 實驗十 折半查找 實驗十一 哈希表的應(yīng)用 實驗十二 二叉排序樹的綜合練習(xí)要求:了解查找的基本思想及查找成功和不成功的概念,;掌握在順序表,有序表,,索引表,,散列表等上的查找方法和算法,并能求出相應(yīng)的平均查找長度,;理解并掌握二叉排序樹,,平衡二叉樹b-樹的各種算法。
9,、排序(3學(xué)時)實驗十三 插入排序 實驗十四 選擇排序 實驗十五 排序綜合練習(xí)
要求:領(lǐng)會排序的基本思想和基本概念,;理解并掌握插入排序,冒泡排序,,快速排序,,直接選擇排序,堆排序,,歸并排序和基數(shù)排序的基本思想,,步驟,算法及時空效率分析,;了解外排序的定義和基本方法。
五,、大綱說明
1,、課堂講述的論題只是核心或有特色的知識內(nèi)容,,還有相當(dāng)數(shù)量的篇章內(nèi)容留給學(xué)生自學(xué),所確定的自學(xué)部分內(nèi)容亦屬考查范圍,。
2,、“數(shù)據(jù)結(jié)構(gòu)”課注重上機訓(xùn)練,所有作業(yè)都必須配有規(guī)范的文檔,。上機訓(xùn)練由平時的上機訓(xùn)練和小學(xué)期的實訓(xùn)課程設(shè)計兩部分組成,。
3、課內(nèi)學(xué)時安排說明:前8周每周4學(xué)時全為理論課,,從第9周開始理論和上機為1:1,,也即2學(xué)時理論,2學(xué)時上機訓(xùn)練,。
4,、本課強調(diào)能力的培養(yǎng),期末采用半開卷考試(允許同學(xué)攜帶一頁a4紙的總結(jié)資料),。本課成績由平時作業(yè),、上機成績(30%)和期末考試(70%)合成得到,有獨到見解的作業(yè)予以適當(dāng)加分,。
5,、主要參考書:
[1]《數(shù)據(jù)結(jié)構(gòu)與算法教程》鄒永林 周蓓 唐曉陽 楊劍勇 編著 機械工業(yè)出版社
[2]《數(shù)據(jù)結(jié)構(gòu)(c語言版)》(含cd)嚴(yán)蔚敏 吳為民 編著 清華大學(xué)出版社
[3]《數(shù)據(jù)結(jié)構(gòu)習(xí)題集(c語言版)》嚴(yán)蔚敏 編著 清華大學(xué)出版社
[4]《數(shù)據(jù)結(jié)構(gòu)習(xí)題解析與實訓(xùn)》張世和 編著 清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)與算法 課程篇四
《數(shù)據(jù)結(jié)構(gòu)與算法》課程設(shè)計教學(xué)大綱(data structures & algorithms)
一、基本信息
課程編號:e1132107 課程類別:學(xué)科基礎(chǔ)課必修課 適用層次:本科
適用專業(yè):計算機科學(xué)與技術(shù),、網(wǎng)絡(luò)工程,、軟件工程等 開課學(xué)期:3 學(xué) 分:2學(xué)分 學(xué) 時:2周 考核方式:考查
二、教學(xué)目的
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計不僅是數(shù)據(jù)結(jié)構(gòu)與算法課程的實踐教學(xué)環(huán)節(jié),,而且是一門綜合性實驗項目,。通過這個實驗,培養(yǎng)學(xué)生綜合運用數(shù)據(jù)結(jié)構(gòu)基本知識和程序設(shè)計基本知識,,解決實際問題,,提高程序設(shè)計的能力和團隊協(xié)作精神。
本課程設(shè)計的目的就是要達到理論與實際應(yīng)用相結(jié)合,,使同學(xué)們能夠根據(jù)數(shù)據(jù)對象的特性,,學(xué)會數(shù)據(jù)組織的方法,能把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來,,并培養(yǎng)基本的,、良好的程序設(shè)計技能。
1.學(xué)生通過實踐掌握線性表,、樹,、圖等數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)及算法實現(xiàn); 2.培養(yǎng)學(xué)生利用數(shù)據(jù)結(jié)構(gòu)知識解決實際問題的能力;3.使學(xué)生初步具備查閱資料,、分析設(shè)計,、上機實現(xiàn)和書寫科技 報告的能力,。
三、基本要求
1.指導(dǎo)教師要在選題,、設(shè)計,、上機實現(xiàn)等諸環(huán)節(jié)上投入精力,加強指導(dǎo),、討論和答疑的力度,。尤其在選題上,要充分考慮學(xué)生目前所具有的知識水平,、掌握的開發(fā)工具,、以及綜合設(shè)計能力的現(xiàn)狀,使題目取材合理,、大小適中,、難易適度,使學(xué)生在完成設(shè)計工作后,,能有所收獲,。2.參加課程設(shè)計的學(xué)生要珍惜機會、勤奮工作,、勇于創(chuàng)新,、勇于探索、勇于實踐,,虛心向指導(dǎo)教師請教,,向同學(xué)學(xué)習(xí),獨立完成設(shè)計任務(wù),。
3.學(xué)生需保質(zhì),、保量、保時間進度地提交規(guī)范的課程設(shè)計報告,,審查由指導(dǎo)教師負責(zé),。
四、教學(xué)內(nèi)容
1.主要內(nèi)容:應(yīng)用所掌握的線性表,、樹,、圖等數(shù)據(jù)結(jié)構(gòu)知識解決實際問題。2.軟件開發(fā)工具:c/c++,、java,。
3.課程設(shè)計題目:指導(dǎo)教師擬定(參考題目見附錄1)
4.具體步驟:指導(dǎo)教師擬定設(shè)計題目,學(xué)生研究具體問題,、進行需求分析,、選擇合適的數(shù)據(jù)結(jié)構(gòu)、設(shè)計算法,、編寫并調(diào)試代碼,、書寫文檔材料,、提交設(shè)計報告,最后,,由指導(dǎo)教師驗收并評定成績。
5.設(shè)計內(nèi)容及時間安排:第1-3天,,選定題目,,明確題目要求、確定數(shù)據(jù)結(jié)構(gòu),、設(shè)計算法,,并分析算法復(fù)雜度;第4-8天,,編寫程序,、調(diào)試程序、測試程序,;第9-10天,,撰寫設(shè)計報告,準(zhǔn)備答辯(上機演示,,回答教師提問),。6.設(shè)計報告書寫要求:按照軟件開發(fā)規(guī)范的要求書寫設(shè)計報告(參見附錄三報告書寫格式);要求報告層次結(jié)構(gòu)清晰,、圖表完整,、語言通順、字跡工整,。7.驗收要求:1)運行所設(shè)計的程序,;2)回答有關(guān)問題;3)提交課程設(shè)計報告(打印或手寫在實習(xí)報告冊上),;4)提交軟盤(源程序),。(鼓勵學(xué)生創(chuàng)新。對內(nèi)容有創(chuàng)新者,,成績評定將適當(dāng)提高),。
五、考核方法
學(xué)習(xí)成績的評定方式:考查,。
課程設(shè)計成績評定 =平時出勤(20%)+設(shè)計報告(40%)+答辯(40%)通過設(shè)計答辯方式,,并結(jié)合學(xué)生的動手能力,獨立分析解決問題的能力和創(chuàng)新精神,,總結(jié)報告和答辯水平以及學(xué)習(xí)態(tài)度綜合考評,。成績分為優(yōu)、良,、中,、及格和不及格五等,。
六、教材與參考資料 1.建議教材:
[1] 數(shù)據(jù)結(jié)構(gòu)(c++)版,,王紅梅,、胡明、王濤編著,,清華大學(xué)出版社,,2005.7 [2] 自編教材
2.建議參考書目:
[1] 許卓群,楊冬青,,唐世渭,,張銘.數(shù)據(jù)結(jié)構(gòu)與算法.高等教育出版社,2004.7 [2] 嚴(yán)蔚敏, 陳文博.數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程.清華大學(xué)出版社, 2001.2 [3] 朱晉蜀.數(shù)據(jù)結(jié)構(gòu)(第一版).成都: 電子科技大學(xué)出版社, 2000.1 [4] clifford r著.張銘,,劉曉丹譯.數(shù)據(jù)結(jié)構(gòu)與算法分析.電子工業(yè)出版社,,1998.8 [5] 殷人昆等.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++描述).清華大學(xué)出版社,1999.7 [6] ford w., topp structures with c++.清華大學(xué)出版社(影印版),,1997.3
附錄一
參考題目(可分若干組,,每個學(xué)生選擇其中一個題目)
1.商廈家電庫存管理 2.排序算法的時間比較
3.使用哈希表技術(shù)判斷兩個源程序的相似性 4.以隊列實現(xiàn)的仿真技術(shù)預(yù)測理發(fā)館的經(jīng)營狀況 5.某公園導(dǎo)游圖
6.用樹型結(jié)構(gòu)的搜索算法模擬因特網(wǎng)域名的查詢 7.管道鋪設(shè)施工的最佳方案選擇 8.表達式分析與求值程序 9.安排教學(xué)計劃
10.設(shè)計huffman 編碼器與解碼器 11.在國際象棋盤上馬遍歷問題 12.八皇后問題 13.民航售票系統(tǒng) 14.模擬旅館管理系統(tǒng)中的床位分配和加收 15.銀行業(yè)務(wù)活動的模擬
16.文字統(tǒng)計系統(tǒng)—文字研究助手 17.修道士野人問題 18.考試問題
19.計算機輔助考核系統(tǒng) 20.學(xué)籍管理系統(tǒng)
注:學(xué)生可以自選題目或選擇指導(dǎo)老師擬定的題目。
附錄二
開發(fā)步驟
1.分析題目的要求,、目的,; 2.選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu);
3.抽象數(shù)據(jù)類型的設(shè)計,; 4.抽象數(shù)據(jù)類型的實現(xiàn),; 5.編寫代碼、上機調(diào)試,; 6.總結(jié)驗收,、評價。
附錄三 報告書寫格式
1.問題描述
題目內(nèi)容,、基本要求 2.需求分析
軟件的基本功能,、輸入/輸出形式、測試數(shù)據(jù)要求 3.概要設(shè)計
所需的adt及作用,、主程序流程及模塊調(diào)用關(guān)系 4.詳細設(shè)計
實現(xiàn)概要設(shè)計的數(shù)據(jù)類型,、每個操作的偽碼算法、主程序和其它模塊的偽碼算法,、函數(shù)調(diào)用關(guān)系圖 5.編碼與調(diào)試分析
編碼與調(diào)試過程中遇到的問題及解決的辦法,,還存在哪些沒有解決的問題? 6.使用說明
簡要說明程序運行操作步驟 7.測試結(jié)果
8.課程設(shè)計心得體會
數(shù)據(jù)結(jié)構(gòu)與算法 課程篇五
數(shù)據(jù)結(jié)構(gòu)與算法課程學(xué)習(xí)總結(jié)報告
11計本一班 許雪松 1104013018
數(shù)據(jù)結(jié)構(gòu)與算法是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),,它不僅是計算機科學(xué)的核心課程,,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課。總的來說感觸還是比較深的,,剛開始上的時候還蠻簡單的,,越到后面感覺越難,算法也更復(fù)雜了,,有時候甚至聽不懂,,老師上課時講的也蠻快的,所以只能靠課下下功夫了,。下面是我對本學(xué)期學(xué)習(xí)這門課的總結(jié),。
一、數(shù)據(jù)結(jié)構(gòu)與算法知識點
第一章的數(shù)據(jù)結(jié)構(gòu)和算法的引入,,介紹了數(shù)據(jù)和數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu),、算法描述工具,、算法和算法評價四個方面的知識。
第二章具體地介紹了順序表的概念,、基本運算及其應(yīng)用,。基本運算有:初始化表,、求表長,、排序、元素的查找,、插入及刪除等,。元素查找方法有:簡單順序查找、二分查找和分塊查找,。排序方法有:直接插入排序,、希爾排序、冒泡排序,、快速排序,、直接選擇排序及歸并排序等。最后介紹了順序串的概念,,重點在于串的模式匹配,。
第三章主要介紹的是線性邏輯結(jié)構(gòu)的數(shù)據(jù)在鏈接存儲方法下數(shù)據(jù)結(jié)構(gòu)鏈表的相關(guān)知識。主要是單鏈表,、循環(huán)鏈表的數(shù)據(jù)類型結(jié)構(gòu),、數(shù)據(jù)結(jié)構(gòu)、基本運算及其實現(xiàn)以及鏈表的相關(guān)應(yīng)用問題,,在此基礎(chǔ)上介紹了鏈串的相關(guān)知識,。在應(yīng)用方面有多項式的相加問題、歸并問題、箱子排序問題和鏈表在字符處理方面的應(yīng)用問題等,。本章未完全掌握的是循環(huán)鏈表的算法問題和c的描述,。
第四章介紹在兩種不同的存儲結(jié)構(gòu)下設(shè)計的堆棧,即順序棧和鏈棧的相關(guān)知識,,了解堆棧的相關(guān)應(yīng)用,,掌握應(yīng)用堆棧來解決實際問題的思想及方法。本章主要內(nèi)容是順序棧和鏈棧的概念,、數(shù)據(jù)類型,、數(shù)據(jù)結(jié)構(gòu)定義和基本運算算法及其性能分析。本章堆棧算法思想較為簡單,,所以能較好掌握,。
第五章主要介紹順序存儲和鏈接存儲方法下的兩種隊列、順序(循環(huán))隊列和鏈隊列的數(shù)據(jù)結(jié)構(gòu),、基本運算及其性能分析以及應(yīng)用,。順序隊列(重點是循環(huán)隊列)和鏈隊列的概念、數(shù)據(jù)類型描述,、數(shù)據(jù)結(jié)構(gòu)和基本運算算法及其性能分析等,。本章同堆棧有點類似,算法思想較為簡單,,所以能較好掌握,;但難點重在循環(huán)隊列隊空、隊滿的判斷條件問題,。
第六章“特殊矩陣,、廣義表及其應(yīng)用”將學(xué)習(xí)數(shù)組、稀疏矩陣和廣義表的基本概念,,幾種特殊矩陣的存儲結(jié)構(gòu)及其基本運算,,在此基礎(chǔ)上學(xué)習(xí)特殊矩陣的計算算法與廣義表應(yīng)用等相關(guān)問題。本章的重點是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)及其基本運算算法,。掌握了特殊矩陣的壓縮存儲結(jié)構(gòu),,在該存儲結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計算和廣義表的存儲結(jié)構(gòu),。
第七章二叉樹及其應(yīng)用,。分為二叉樹的基本概念、二叉樹存儲結(jié)構(gòu),、二叉樹的遍歷算法,、線索二叉樹、二叉樹的應(yīng)用(哈夫曼樹,、二叉排序樹,、堆和堆排序、基本算法)?;舅惴òǘ鏄涞慕?、遍歷、線索化等算法,。在此基礎(chǔ)上,,介紹二叉樹的一些應(yīng)用問題,包括哈夫曼編碼問題,、(平衡)二叉排序樹問題和堆排序問題等,。
第八章說的是樹和森林,首先我們要知道樹與二叉樹是不同的概念,。課本介紹了樹和森林的概念,、遍歷和存儲結(jié)構(gòu),還有樹,、森林和二叉樹的相互關(guān)系,,樹或森林怎樣轉(zhuǎn)化成二叉樹,二叉樹又如何轉(zhuǎn)換為樹和森林等算法,。
第九章“散列結(jié)構(gòu)及其應(yīng)用”是邏輯結(jié)構(gòu)“集合型”的數(shù)據(jù)元素在散列存儲方法下的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用知識內(nèi)容,。主要介紹散列函數(shù)的概念,、散列結(jié)構(gòu)的概念、散列存儲結(jié)構(gòu)的概念---散列表,、散列函數(shù)和散列表中解決沖突的處理方法---開放定址法,、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,,所以掌握不太好,。
第十章圖及其應(yīng)用。分為圖的概念,、圖的存儲結(jié)構(gòu)及其基本算法,、圖的遍歷及算法、有向圖的連通性和最小生成樹,、圖的最小生成樹,、非連通圖的生成森林算法、最短路徑,、有向無環(huán)圖及其應(yīng)用,。
二、對各知識點的掌握情況
我對各知識點的掌握情況總結(jié)如下:
對于第一章對數(shù)據(jù)結(jié)構(gòu)的概念理解頗深,,大概是每次都要談?wù)摰桨?。對算法的時間性能,空間性能基本了解。這些在后面的章節(jié)都會有運用,。第二章本章重點和難點在查找和排序問題的算法思想上,,6種排序方法的性能比較。本章未掌握的為希爾排序,、快速排序,、歸并排序的時間復(fù)雜度分析。第三章,,對鏈表掌握還好,,對其數(shù)據(jù)結(jié)構(gòu)進行了分析,有循環(huán)鏈表,,掌握的不是很好,,對其中一些用法不熟練。第四章堆棧,,本章堆棧算法思想較為簡單,,所以能較好掌握,但表達式計算問題未掌握好的,。第五章的循環(huán)隊列隊空,、隊滿的判斷條件問題掌握的不是很好。第六章的重點是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)及其基本運算算法,。掌握了特殊矩陣的壓縮存儲結(jié)構(gòu),,在該存儲結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計算和廣義表的存儲結(jié)構(gòu),。第七章對二叉樹掌握較好,,其概念,存儲,,遍歷有很好的掌握,。就是對二叉排序樹有點生疏,它的生成算法不是很會,。第八章樹樹與二叉樹之間的轉(zhuǎn)換,,森林與二叉樹的轉(zhuǎn)換算法思想基本掌握。第九章散列的一些知識,,沒有深入學(xué)習(xí),,大概了解了散列存儲結(jié)構(gòu)散列表,散列函數(shù),,沖突的處理方法,。第十章了解了圖的逆鄰接表的存儲結(jié)構(gòu),關(guān)鍵路徑求解算法未能掌握好,,不能靈活運用圖的不同數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復(fù)雜的應(yīng)用問題,。
三,、學(xué)習(xí)體會
剛剛接觸這門課時,看到課本中全是算法,,當(dāng)時就暈了,,因為我的c語言學(xué)的不好,我擔(dān)心會影響這門課的學(xué)習(xí),,后來上課時老師說學(xué)習(xí)這門課的基礎(chǔ)是c語言,,所以我當(dāng)時就決定一定要好好補補,爭取不被拖后腿,,在學(xué)習(xí)這門課的期間,,也遇到了不少問。但是通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法,,讓我對程序有了新的認(rèn)識,,也有了更深的理解。同時,,也讓我認(rèn)識到,,不管學(xué)習(xí)什么,概念是基礎(chǔ),,所有的知識框架都是建立在基礎(chǔ)概念之上的,,所以,第一遍看課本要將概念熟記于心,,然后構(gòu)建知識框架,。并且,對算法的學(xué)習(xí)是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵,。在第二遍看課本的過程中,要注重對算法的掌握,。對于一個算法,,讀一遍可能能讀懂,但不可能完全領(lǐng)會其中的思想,。掌握一個算法,,并不是說將算法背過,而是掌握算法的思想,。我們需要的是耐心,。每看一遍就會有這一遍的收獲。讀懂算法之后,,自己再默寫算法,,寫到不會的地方,看看課本想想自己為什么沒有想到,。對算法的應(yīng)用上,,學(xué)習(xí)算法的目的是利用算法解決實際問題,。會寫課本上已有的算法之后,可以借其思想進行擴展,,逐步提高編程能力,。
四、對課程教學(xué)的建議
1,、課程課時較緊,,課堂上的練習(xí)時間較少,講解的東西越多,,頭腦有時就很混亂,。
2、感覺上課時的氣氛不是很好,,雖然大部分人都在聽,,可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,,可以是大家都非常關(guān)心的一些內(nèi)容,,這樣既讓大家能在思考之余有一個放松,也能夠提高學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效率,。
3,、學(xué)習(xí)的積極性很重要,有時候我們花了很長時間去寫實驗報告,,也很認(rèn)真的去理解去掌握,,可是最后實驗報告可能就只得了一個c,抄的人反而得a,,這樣的話很容易打擊學(xué)生的積極性,,在后面的實驗報告中沒動力再去認(rèn)真寫。所以希望老師能在這方面有所調(diào)整,。
4,、雖然講課的時間很緊,但是還是希望老師能在講述知識點的時候能運用實際的調(diào)試程序來給我們講解,,這樣的話能讓我們對這些內(nèi)容有更深刻的印象和理解,。