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