2023年數(shù)據(jù)結(jié)構(gòu)與算法心得(熱門18篇)

格式:DOC 上傳日期:2023-11-20 09:28:15
2023年數(shù)據(jù)結(jié)構(gòu)與算法心得(熱門18篇)
時間:2023-11-20 09:28:15     小編:文軒

總結(jié)可以使我們更加客觀地看待自己的成績和不足,掌握改進的方向。一個好的寫作思路能夠幫助我們更好地組織文章的結(jié)構(gòu)和內(nèi)容。我們?yōu)榇蠹艺砹艘恍﹥?yōu)秀的總結(jié)范文,供大家參考和借鑒,希望對大家有所幫助。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇一

課程名稱:

學生學號:

所屬院部:

(理工類)。

學生姓名:

指導教師:——20學年第學期。

金陵科技學院教務處制。

實驗報告書寫要求。

實驗報告原則上要求學生手寫,要求書寫工整。若因課程特點需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用a4的紙張。

實驗報告書寫說明。

實驗報告中一至四項內(nèi)容為必填項,包括實驗目的和要求;實驗儀器和設備;實驗內(nèi)容與過程;實驗結(jié)果與分析。各院部可根據(jù)學科特點和實驗具體要求增加項目。

填寫注意事項。

(1)細致觀察,及時、準確、如實記錄。(2)準確說明,層次清晰。

(3)盡量采用專用術(shù)語來說明事物。

(4)外文、符號、公式要準確,應使用統(tǒng)一規(guī)定的名詞和符號。(5)應獨立完成實驗報告的書寫,嚴禁抄襲、復印,一經(jīng)發(fā)現(xiàn),以零分論處。

實驗報告批改說明。

實驗報告的批改要及時、認真、仔細,一律用紅色筆批改。實驗報告的批改成績采用百分制,具體評分標準由各院部自行制定。

實驗報告裝訂要求。

實驗批改完畢后,任課老師將每門課程的每個實驗項目的實驗報告以自然班為單位、按學號升序排列,裝訂成冊,并附上一份該門課程的實驗大綱。

實驗項目名稱:順序表實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗1順序表。

一、實驗目的和要求。

掌握順序表的定位、插入、刪除等操作。

二、實驗儀器和設備。

vc6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)編寫程序建立一個順序表,并逐個輸出順序表中所有數(shù)據(jù)元素的值。編寫主函數(shù)測試結(jié)果。

(2)編寫順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,返回順序表中和x值相等的第1個數(shù)據(jù)元素的序號(序號從0開始編號);如果不存在,返回-1。編寫主函數(shù)測試結(jié)果。(3)在遞增有序的順序表中插入一個新結(jié)點x,保持順序表的有序性。

解題思路:首先查找插入的位置,再移位,最后進行插入操作;從第一個元素開始找到第一個大于該新結(jié)點值x的元素位置i即為插入位置;然后將從表尾開始依次將元素后移一個位置直至元素i;最后將新結(jié)點x插入到i位置。

(4)刪除順序表中所有等于x的數(shù)據(jù)元素。

2、選做題。

(5)已知兩個順序表a和b按元素值遞增有序排列,要求寫一算法實現(xiàn)將a和b歸并成一個按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。

程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:單鏈表實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗2單鏈表。

一、實驗目的和要求。

1、實驗目的。

掌握單鏈表的定位、插入、刪除等操作。

2、實驗要求。

(1)注意鏈表的空間是動態(tài)分配的,某結(jié)點不用之后要及時進行物理刪除,以便釋放其內(nèi)存空間。

(2)鏈表不能實現(xiàn)直接定位,一定注意指針的保存,防止丟失。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)編寫程序建立一個單鏈表,并逐個輸出單鏈表中所有數(shù)據(jù)元素。(2)在遞增有序的單鏈表中插入一個新結(jié)點x,保持單鏈表的有序性。

解題思路:首先查找插入的位置然后進行插入操作;從第一個結(jié)點開始找到第一個大于該新結(jié)點值的結(jié)點即為插入位置;然后在找到的此結(jié)點之前插入新結(jié)點;注意保留插入位置之前結(jié)點的指針才能完成插入操作。

(3)編寫實現(xiàn)帶頭結(jié)點單鏈表就地逆置的子函數(shù),并編寫主函數(shù)測試結(jié)果。

2、選做題。

已知指針la和lb分別指向兩個無頭結(jié)點單鏈表的首元結(jié)點。要求編一算法實現(xiàn),從表la中刪除自第i個元素起共len個元素后,將它們插入到表lb中第j個元素之前。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:堆棧和隊列實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗3堆棧和隊列。

一、實驗目的和要求。

(1)掌握應用棧解決問題的方法。(2)掌握利用棧進行表達式求和的算法。

(3)掌握隊列的存儲結(jié)構(gòu)及基本操作實現(xiàn),并能在相應的應用問題中正確選用它們。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)判斷一個算術(shù)表達式中開括號和閉括號是否配對。(2)測試“漢諾塔”問題。

(3)假設稱正讀和反讀都相同的字符序列為”回文”,試寫一個算法判別讀入的一個以’@’為結(jié)束符的字符序列是否是“回文”。

2、選做題。

在順序存儲結(jié)構(gòu)上實現(xiàn)輸出受限的雙端循環(huán)隊列的入列和出列算法。設每個元素表示一個待處理的作業(yè),元素值表示作業(yè)的預計時間。入隊列采取簡化的短作業(yè)優(yōu)先原則,若一個新提交的作業(yè)的預計執(zhí)行時間小于隊頭和隊尾作業(yè)的平均時間,則插入在隊頭,否則插入在隊尾。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:串實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗4串。

一、實驗目的和要求。

掌握串的存儲及應用。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)編寫輸出字符串s中值等于字符ch的第一個字符的函數(shù),并用主函數(shù)測試結(jié)果。

(2)編寫輸出字符串s中值等于字符ch的所有字符的函數(shù),并用主函數(shù)測試結(jié)果。

解題思路:可以將第一題程序改進成一個子函數(shù),在本題中循環(huán)調(diào)用。(3)設字符串采用單字符的鏈式存儲結(jié)構(gòu),編程刪除串s從位置i開始長度為k的子串。

2、選做題。

假設以鏈結(jié)構(gòu)表示串,編寫算法實現(xiàn)將串s插入到串t中某個字符之后,若串t中不存在這個字符,則將串s聯(lián)接在串t的末尾。

提示:為提高程序的通用性,插入位置字符應設計為從鍵盤輸入。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:二叉樹實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗5二叉樹。

一、實驗目的和要求。

(1)掌握二叉樹的生成,以及前、中、后序遍歷算法。(2)掌握應用二叉樹遞歸遍歷思想解決問題的方法。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)建立一棵二叉樹。對此樹進行前序遍歷、中序遍歷及后序遍歷,輸出遍歷序列。

(2)在第一題基礎上,求二叉樹中葉結(jié)點的個數(shù)。(3)在第一題基礎上,求二叉樹中結(jié)點總數(shù)。(4)在第一題基礎上,求二叉樹的深度。

2、選做題。

已知一棵完全二叉樹存于順序表sa中,[1…]存儲結(jié)點的值。試編寫算法由此順序存儲結(jié)構(gòu)建立該二叉樹的二叉鏈表。

解題思路:根據(jù)完全二叉樹順序存儲的性質(zhì)來確定二叉樹的父子關(guān)系即“還原”了二叉樹,之后再按照二叉樹二叉鏈表的構(gòu)造方法進行建立。完全二叉樹順序存儲的一個重要性質(zhì)為,第i個結(jié)點的左孩子是編號為2i的結(jié)點,第i個結(jié)點的右孩子是編號為2i+1的結(jié)點。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:圖實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗6圖。

一、實驗目的和要求。

(1)熟練掌握圖的基本概念、構(gòu)造及其存儲結(jié)構(gòu)。

(2)熟練掌握對圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷的算法。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)構(gòu)造一個無向圖(用鄰接矩陣表示存儲結(jié)構(gòu))。

(2)對上面所構(gòu)造的無向圖,進行深度優(yōu)先遍歷和廣度優(yōu)先遍歷,輸出遍歷序列。

2、選做題。

采用鄰接表存儲結(jié)構(gòu),編寫一個判別無向圖中任意給定的兩個頂點之間是否存在一條長度為k的簡單路徑的算法。簡單路徑是指其頂點序列中不含有重復頂點的路徑。提示:兩個頂點及k值均作為參數(shù)給出。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:排序?qū)嶒瀸W時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗7排序。

一、實驗目的和要求。

(1)熟練掌握希爾排序、堆排序、直接插入排序、起泡排序、快速排序、直接選擇排序、歸并排序和基數(shù)排序的基本概念。

(2)掌握以上各種排序的算法。區(qū)分以上不同排序的優(yōu)、缺點。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

用隨機數(shù)產(chǎn)生100000個待排序數(shù)據(jù)元素的關(guān)鍵字值。測試下列各排序函數(shù)的機器實際執(zhí)行時間(至少測試兩個):直接插入排序、希爾排序(增量為4,2,1)、冒泡排序、快速排序、直接選擇排序、二路歸并排序、堆排序和基于鏈式隊列的基數(shù)排序。

2、選做題。

假設含n個記錄的序列中,其所有關(guān)鍵字為值介于v和w之間的整數(shù),且其中很多關(guān)鍵字的值是相同的。則可按如下方法排序:另設數(shù)組number[v…w],令number[i]統(tǒng)計關(guān)鍵字為整數(shù)i的紀錄個數(shù),然后按number重排序列以達到有序。試編寫算法實現(xiàn)上述排序方法,并討論此種方法的優(yōu)缺點。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

實驗項目名稱:查找實驗學時:2同組學生姓名:實驗地點:實驗日期:實驗成績:批改教師:批改時間:

實驗8查找。

一、實驗目的和要求。

(1)掌握順序表查找、有序表查找、索引順序表查找的各種算法。(2)掌握哈希表設計。

二、實驗儀器和設備。

visualc++6.0。

三、實驗內(nèi)容與過程(含程序清單及流程圖)。

1、必做題。

(1)在一個遞增有序的線性表中利用二分查找法查找數(shù)據(jù)元素x。

2、選做題。

(2)構(gòu)造一個哈希表,哈希函數(shù)采用除留余數(shù)法,哈希沖突解決方法采用鏈地址法。設計一個測試程序進行測試。

提示:構(gòu)造哈希表只是完成查找的第一步,大家應該掌握在哈希表上進行查找的過程,可以試著編程序?qū)崿F(xiàn)。程序清單:

四、實驗結(jié)果與分析(程序運行結(jié)果及其分析)。

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇二

做了一個星期的程序設計終于做完了,在這次程序設計課中,真是讓我獲益匪淺,我突然發(fā)現(xiàn)寫程序還挺有意思的。

由于上學期的c語言跟這學期的數(shù)據(jù)結(jié)構(gòu)都算不上真正的懂,對于書上的稍微難點的知識就是是而非的,所以我只是對老師的程序理解,我也試著去改變了一些變量,自己也盡量多的去理解老師做程序的思路。當我第一天坐在那里的時候,我就不知道該做些什么,后來我只有下來自己看了一遍書來熟悉下以前學過的知識。

通過這次的程序設計,發(fā)現(xiàn)一個程序設計就是算法與數(shù)據(jù)結(jié)構(gòu)的結(jié)合體,自己也開始對程序產(chǎn)生了前所未有的興趣,以前偷工減料的學習也不可能一下子寫出一個程序出來,于是我就認真看老師寫的程序,發(fā)現(xiàn)我們看懂了一個程序其實不難,難的是對于一個程序的思想的理解,我們要掌握一個算法,不僅僅限于讀懂,主要的是要理解老師的思路,學習老師的解決問題的方法。

這次試驗中,我發(fā)現(xiàn)書本上的知識是一個基礎,但是我基礎都沒掌握,更別說寫出一個整整的'程序了。自己在寫程序的時候,也發(fā)現(xiàn)自己的知識太少了,特別是基礎知識很多都是模模糊糊的一個概念,沒有落實到真正的程序,所以自己寫的時候也感到萬分痛苦,基本上涉及一個知識我就會去看看書,對于書本上的知識沒掌握好。在飯后閑暇時間我也總結(jié)了一下,自己以前上課也認真的聽了,但是還是寫不出來,這主要歸結(jié)于自己的練習太少了,而且也總是半懂就不管了。在改寫老師的程序中也出現(xiàn)了很多的問題,不斷的修改就是不斷的學習過程,當我們?nèi)硇牡耐度肫渲袝r,實際上是一件很有樂趣的事情。對于以后的學習有了幾點總結(jié):第一、熟記各種數(shù)據(jù)結(jié)構(gòu)類型,定義、特點、基本運算;第二、各種常用的排序算法,如冒泡排序、堆排序……,這些是必考的內(nèi)容,分數(shù)不會少于20%;第三,多做習題,看題型,針對題型來有選擇復習;數(shù)據(jù)結(jié)構(gòu)看上去很復雜,但你靜下心來把書掃上幾遍,分解各個知識點,這一下來,學數(shù)據(jù)結(jié)構(gòu)的思路就會很清晰了。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇三

(一)課程性質(zhì)。

《數(shù)據(jù)結(jié)構(gòu)》是一門專業(yè)基礎課,在計算機軟件的各個領域中均會使用到數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識。本課程的先修課程為c程序設計或c++程序設計。

(二)教學目的。

學會從問題入手,分析研究計算機加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應用所涉及的數(shù)據(jù)選擇適當?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應的操作算法,并初步掌握時間和空間分析技術(shù)。另一方面,本課程的學習過程也是進行復雜程序設計的訓練過程,要求學生會書寫符合軟件工程規(guī)范的文件,編寫的程序代碼應結(jié)構(gòu)清晰、正確易讀,能上機調(diào)試并排除錯誤。

(三)教學時數(shù)。

課堂講授每周4學時,18周,共72學時。

(四)教學方法。

本課程將采用課堂講授及課堂討論相結(jié)合的交互式教學法,同時輔以必要的上機操作實踐。

(五)面向?qū)I(yè)。

計算機科學與技術(shù)專業(yè)。

二、教學內(nèi)容。

第一章緒論。

(一)教學目的要求。

介紹數(shù)據(jù)結(jié)構(gòu)的一些基本概念,算法的時間復雜度和空間復雜度的分析方法,抽象數(shù)據(jù)類型的定義和使用以及算法的描述方法。掌握數(shù)據(jù)結(jié)構(gòu)的一些基本概念,掌握算法的時間復雜度和空間復雜度的分析方法,了解抽象數(shù)據(jù)類型的定義和使用,了解算法的描述方法。

(二)教學內(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ù)類型。算法時間復雜度和空間復雜度的分析。

教學重點:有關(guān)數(shù)據(jù)結(jié)構(gòu)的各個名詞和術(shù)語的含義,以及語句頻度和時間復雜度、空間復雜度的估算。

教學難點:算法時間復雜度和空間復雜度的分析。

第一節(jié)。

一、非數(shù)值計算。

第二節(jié)。

一、數(shù)據(jù)。

三、數(shù)據(jù)類型。

四、抽象數(shù)據(jù)類型。

五、多型數(shù)據(jù)類型。

第三節(jié)。

一、固有數(shù)據(jù)類型。

基本概念和術(shù)語什么是數(shù)據(jù)結(jié)構(gòu)。

二、數(shù)據(jù)抽象。

三、抽象數(shù)據(jù)類型的描述語言。

第四節(jié)。

一、算法。

二、算法設計的要求。

三、算法效率的度量。

四、算法的存儲空間需求。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

4學時。

第二章線性表。

(一)教學目的與要求。

介紹線性表的基本概念和類型定義,對順序表和單鏈表的常用操作方法及其程序?qū)崿F(xiàn),循環(huán)鏈表和雙向鏈表的定義和它的插入、刪除等操作方法。掌握線性表的基本概念和類型定義;熟練掌握對順序表和單鏈表的常用操作方法及其程序?qū)崿F(xiàn);掌握循環(huán)鏈表和雙向鏈表的定義和它的插入、刪除等操作方法。

(二)教學內(nèi)容。

主要內(nèi)容:線性表的基本概念和類型定義,線性表的順序存儲結(jié)構(gòu),線性表的鏈接存儲結(jié)構(gòu):(1)單鏈表的查找、插入和刪除;(2)循環(huán)鏈表;(3)雙向鏈表。

教學重點:在順序表和鏈表上各種基本算法的實現(xiàn)及相關(guān)的時間性能分析。

教學難點:用所學的基本知識設計有效算法解決與線性表相關(guān)的應用問題。鏈表要分清鏈表中指針p和結(jié)點*p之間的對應關(guān)系,區(qū)分鏈表中的頭結(jié)點、頭指針以及循環(huán)鏈表、雙向鏈表的特點等。

第一節(jié)。

一、線性表的定義。

二、線性表的基本操作。

第二節(jié)。

一、順序表。

二、順序表上基本運算的實現(xiàn)。

三、順序表應用舉例。

第三節(jié)。

一、線性鏈表。

二、循環(huán)鏈表。

三、雙向鏈表。

四、靜態(tài)鏈表。

第四節(jié)一、一元多項式的數(shù)學表示二、一元多項式的計算機表示。

三、抽象數(shù)據(jù)類型:一元多項式的定義。

四、抽象數(shù)據(jù)類型:一元多項式的存儲結(jié)構(gòu)。

五、抽象數(shù)據(jù)類型:一元多項式的基本操作算法實現(xiàn)。

(三)教學方法與形式。

一元多項式的表示及相加線性表的鏈式存儲表示和實現(xiàn)線性表的順序存儲表示和實現(xiàn)。

線性表的類型定義算法和算法分析課堂講授、多媒體課件。

(四)教學時數(shù)。

8學時。

第三章棧和隊列。

(一)教學目的與要求。

介紹棧和隊列的定義,順序和鏈接存儲的棧和隊列的各種運算的方法及其程序?qū)崿F(xiàn)。掌握棧和隊列的定義,熟練掌握順序和鏈接存儲的棧和隊列的各種運算的方法及其程序?qū)崿F(xiàn)。

(二)教學內(nèi)容。

主要內(nèi)容:棧的類型定義,棧的順序存儲和鏈接存儲的表示,在棧的順序存儲和鏈接存儲上進行各種棧操作的算法,棧的應用舉例,隊列的類型定義,隊列的順序存儲(循環(huán)隊)和鏈接存儲表示及各種操作的實現(xiàn)算法。

教學重點:棧和隊列在兩種存儲結(jié)構(gòu)上實現(xiàn)的基本運算。教學難點:遞歸的實現(xiàn)、循環(huán)隊列中對邊界條件的處理。

第一節(jié)。

一、抽象數(shù)據(jù)類型棧的定義。

二、棧的表示和實現(xiàn)。

第二節(jié)。

一、數(shù)制轉(zhuǎn)換。

二、括號匹配的檢驗。

三、表達式求值。

第三節(jié)。

一、函數(shù)調(diào)用與棧。

二、遞歸調(diào)用棧的變化。

第四節(jié)。

一、抽象數(shù)據(jù)類型隊列的定義。

二、鏈隊列--隊列的鏈式表示和實現(xiàn)。

三、循環(huán)隊列--隊列的順序表示和實現(xiàn)。

第五節(jié)。

一、優(yōu)先級隊列的概念。

二、優(yōu)先級隊列的存儲表示和實現(xiàn)。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

4學時。

第四章串。

(一)教學目的與要求。

介紹串的基本概念和操作,串的存儲結(jié)構(gòu)以及基本操作的算法實現(xiàn)。掌握串的基本概念和操作,掌握串的存儲結(jié)構(gòu)以及基本操作的算法實現(xiàn)。

(二)教學內(nèi)容。

主要內(nèi)容:串的類型定義,串的表示和實現(xiàn),正文模式匹配,正文編輯——串操作應用舉例串的類型定義。

教學重點:串類型定義中各基本操作的定義以及串的實現(xiàn)方法。教學難點:利用串的基本操作來實現(xiàn)串的其它操作。

優(yōu)先級隊列隊列棧與遞歸的實現(xiàn)棧的應用舉例。

第一節(jié)。

一、串的定義。

二、串的基本操作。

第二節(jié)。

一、定長順序存儲表示。

二、堆分配存儲表示。

三、串的塊鏈存儲表示。

四、字符串操作的實現(xiàn)。

第三節(jié)。

二、模式匹配的一種改進算法。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

4學時。

串的類型定義。

串的表示和實現(xiàn)。

字符串的模式匹配。

一、求子串位置的定位函數(shù)index(s,t,pos)。

第五章數(shù)組和廣義表。

(一)教學目的。

介紹數(shù)組的基本概念和基本操作的算法實現(xiàn);稀疏矩陣的定義和各種存儲結(jié)構(gòu),稀疏矩陣的轉(zhuǎn)置和相加的方法并了解其算法;廣義表的定義、存儲結(jié)構(gòu)和求廣義表的長度及深度的算法,建立廣義表和輸出廣義表的方法并了解其算法。掌握數(shù)組的基本概念和基本操作的算法實現(xiàn);掌握稀疏矩陣的定義和各種存儲結(jié)構(gòu),掌握稀疏矩陣的轉(zhuǎn)置和相加的方法并了解其算法;掌握廣義表的定義、存儲結(jié)構(gòu)和求廣義表的長度及深度的算法,掌握建立廣義表和輸出廣義表的方法并了解其算法。

(二)教學內(nèi)容。

主要內(nèi)容:稀疏矩陣的定義、存儲和運算,廣義表的定義、存儲和運算串的類型定義。教學重點:特殊矩陣的壓縮存儲,以及稀疏矩陣的三元組順序表示。教學難點:特殊矩陣的壓縮存儲,以及稀疏矩陣的三元組順序表示。

第一節(jié)第二節(jié)。

一、數(shù)組的存儲方式。

二、數(shù)組元素存儲位置的計算。

三、基本操作的實現(xiàn)。

第三節(jié)。

一、特殊矩陣。

二、稀疏矩陣。

第四節(jié)。

一、廣義表的基本概念。

二、廣義表的三個重要結(jié)論。

第五節(jié)。

一、頭尾鏈表存儲表示。

二、擴展線性鏈表存儲表示。

第六節(jié)。

一、求廣義表的深度。

二、復制廣義表。

三、建立廣義表的存儲結(jié)構(gòu)。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

6學時。

第六章樹和二叉樹。

(一)教學目的與要求。

介紹樹的定義、性質(zhì)、存儲結(jié)構(gòu)及遍歷算法,握二叉樹的各種遍歷方法及其實現(xiàn),二叉樹的其他操作方法及實現(xiàn),樹、森林和二叉樹的轉(zhuǎn)換方法,哈夫曼樹的定義和構(gòu)造哈夫曼樹的方法,哈夫曼樹編碼的方法。掌握樹的定義、性質(zhì)、存儲結(jié)構(gòu)及遍歷算法,熟練掌握二叉樹的各種遍歷方法及其實現(xiàn),掌握二叉樹的其他操作方法及實現(xiàn),掌握樹、森林和二叉樹的轉(zhuǎn)換方法,掌握哈夫曼樹的定義和構(gòu)造哈夫曼樹的方法,了解哈夫曼樹編碼的方法。

(二)教學內(nèi)容。

主要內(nèi)容:樹的定義、性質(zhì)和表示方法,二叉樹的定義、性質(zhì)和存儲結(jié)構(gòu),二叉樹的各種遍歷方法及實現(xiàn),建立二叉樹、輸出二叉樹、求二叉樹深度等的操作方法及實現(xiàn),樹的存儲結(jié)構(gòu),進行先根遍歷、后根遍歷和按層遍歷的方法及實現(xiàn),進行樹與二叉樹的轉(zhuǎn)換方法,哈夫曼樹的定義、構(gòu)造哈夫曼樹的方法及哈夫曼編碼的方法。

教學重點:二叉樹和樹的遍歷及其應用。

教學難點:實現(xiàn)二叉樹和樹的各種操作的遞歸算法。

第一節(jié)。

一、樹的定義。

二、森林的定義。

三、樹的抽象數(shù)據(jù)類型定義。

第二節(jié)一、二叉樹的定義二、二叉樹的性質(zhì)三、二叉樹的存儲結(jié)構(gòu)。

第三節(jié)。

一、遍歷二叉樹。

二、線索二叉樹。

第四節(jié)。

一、樹的存儲結(jié)構(gòu)。

二、森林與二叉樹的轉(zhuǎn)換。

三、樹和森林的遍歷。

第五節(jié)。

一、最優(yōu)二叉樹(赫夫曼樹)。

二、赫夫曼編碼。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

10學時。

最優(yōu)樹和赫夫曼編碼。

樹和森林。

遍歷二叉樹和線索二叉樹。

二叉樹。

樹的定義和基本術(shù)語。

第七章圖。

(一)教學目的與要求。

介紹圖的定義和術(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)算法。

(二)教學內(nèi)容。

主要內(nèi)容:圖的定義和術(shù)語,圖的鄰接矩陣、鄰接表和邊集數(shù)組表示,圖的深度和廣度優(yōu)先搜索遍歷,圖的生成樹和最小生成樹,拓撲排序。

教學重點:圖在鄰接矩陣與鄰接表上實現(xiàn)的遍歷算法(dfs和bfs)。教學難點:基于遍歷算法的應用。

第一節(jié)。

一、圖的定義。

二、無向圖。

三、有向圖。

四、連通圖。

五、生成樹。

第二節(jié)。

一、數(shù)組表示法。

二、鄰接表三、十字鏈表。

四、鄰接多重表。

第三節(jié)。

一、深度優(yōu)先搜索。

二、廣度優(yōu)先搜索。

三、連通分量。

第四節(jié)。

一、kruskal算法。

二、prim算法。

第五節(jié)。

一、拓撲排序。

二、關(guān)鍵路徑。

第六節(jié)。

一、從某個源點到其余各項點的最短路徑。

二、每一對頂點之間的最短路徑。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

12學時。

最短路徑有向無環(huán)圖及其應用。

最小生成樹圖的遍歷圖的存儲表示圖的定義和術(shù)語。

第八章查找表。

(一)教學目的與要求。

介紹順序表查找和有序表查找的方法及實現(xiàn);二叉排序樹和平衡二叉樹的定義、對二叉排序樹和平衡二叉樹進行插入、刪除和查找的方法和實現(xiàn)。哈希表的定義,構(gòu)造哈希函數(shù)的多種方法,以及處理沖突的方法;b樹的定義,查找、插入和刪除元素的方法。熟練掌握順序表查找和有序表查找的方法及實現(xiàn);掌握二叉排序樹和平衡二叉樹的定義、熟練掌握對二叉排序樹和平衡二叉樹進行插入、刪除和查找的方法和實現(xiàn)。掌握哈希表的定義,構(gòu)造哈希函數(shù)的多種方法,以及處理沖突的方法;了解b樹的定義,查找、插入和刪除元素的方法。

(二)教學內(nèi)容。

主要內(nèi)容:順序查找和二分查找,索引查找和分塊查找,散列查找,動態(tài)查找樹表。教學重點:順序查找、二分查找、二叉排序樹上查找以及散列表上查找的基本思想和算法實現(xiàn)。

教學難點:二叉排序樹的刪除算法。

第一節(jié)。

一、順序表的查找。

二、有序表的查找。

三、靜態(tài)樹表的查找。

四、索引順序表的查找。

第二節(jié)一、二叉排序樹。

二、平衡二叉樹。

三、動態(tài)的m路搜索樹。

四、b樹和b+樹基本概念。

第三節(jié)。

一、什么是哈希表。

二、哈希函數(shù)的構(gòu)造方法。

三、處理沖突的方法。

四、哈希表的查找及其分析。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

10學時。

第九章內(nèi)部排序。

(一)教學目的與要求。

介紹插入排序、交換排序、選擇排序、快速排序、歸并排序、基數(shù)排序的方法及其實現(xiàn),快速排序、堆排序、二路歸并排序的方法及其實現(xiàn),各種排序方法的穩(wěn)定性、時間復雜度和空間復雜度。掌握插入排序、交換排序、選擇排序、快速排序、歸并排序、基數(shù)排序的方法及其實現(xiàn),熟練掌握快速排序、堆排序、二路歸并排序的方法及其實現(xiàn),掌握各種排序方法的穩(wěn)定性、時間復雜度和空間復雜度。

(二)教學內(nèi)容。

主要內(nèi)容:排序的概念,直接插入排序,冒泡排序和快排序,直接選擇排序和堆排序,歸并排序。

哈希表動態(tài)查找表靜態(tài)查找表教學重點:插入排序(直接插入、折半插入)、交換排序(冒泡、快速排序)、選擇排序(直接選擇、堆)、2-路歸并排序。

教學難點:快速排序partition算法的應用和堆的調(diào)整。

第一節(jié)。

一、穩(wěn)定的排序方法。

二、內(nèi)部/外部排序。

三、內(nèi)部排序種類。

四、排序中的基本操作。

五、排序數(shù)據(jù)的存儲方式。

第二節(jié)。

一、直接插入排序。

二、其他插入排序。

三、希爾排序。

第三節(jié)。

一、起泡排序算法。

二、快速排序算法。

第四節(jié)。

一、簡單選擇排序。

二、樹形選擇排序。

三、堆排序。

第五節(jié)第六節(jié)。

一、多關(guān)鍵字的排序。

二、鏈式基數(shù)排序。

第七節(jié)。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

10學時。

第十章文件。

(一)教學目的與要求。

介紹文件和記錄的基本概念以及基本操作。掌握文件和記錄的基本概念以及基本操作。

(二)教學內(nèi)容。

主要內(nèi)容:基本概念,順序文件,索引文件,索引順序文件,散列文件,多關(guān)鍵碼文件。教學重點:各種文件的結(jié)構(gòu)特點及其適用場合。教學難點:各種文件的結(jié)構(gòu)特點及其適用場合。

第一節(jié)。

一、文件及其類別。

二、記錄的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。

三、文件的操作。

四、文件的物理結(jié)構(gòu)。

第二節(jié)。

一、順序文件的定義。

順序文件基本概念。

各種排序方法的綜合比較。

歸并排序法基數(shù)排序選擇排序法交換排序法插入排序排序的定義和方法。

二、順序文件的優(yōu)缺點。

第三節(jié)。

一、索引文件的定義。

二、索引文件的特點。

第四節(jié)。

一、isam文件。

二、vsam文件。

第五節(jié)。

一、散列文件的定義。

二、散列文件的特點。

第六節(jié)。

一、多重表文件。

二、倒排文件。

(三)教學方法與形式。

課堂講授、多媒體課件。

(四)教學時數(shù)。

4學時。

三、考核方式。

本課程的考核采用閉卷考試的方式,課程的總評成績由平時成績、實驗成績和期末考試成績?nèi)糠纸M成,其中平時成績占總評成績的10%,實驗成績占總評成績的30%,期末考試成績占總評成績的60%。

四、教材選用。

1、殷人昆,陶永雷,謝若陽等:《數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcc++語言描述)》,清華大學出版社,2007.6年第二版。

2、嚴蔚敏,吳偉民:《數(shù)據(jù)結(jié)構(gòu)(c語言版)》及《數(shù)據(jù)結(jié)構(gòu)題集(c語言版)》,清華大學出版社,2003年第一版。

多關(guān)鍵碼文件散列文件isam文件和vsam文件。

索引文件。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇四

為了順利完成實驗教學任務,確保人身、設備的安全,培養(yǎng)嚴謹、踏實、實事求是的科學作風和愛護國家財產(chǎn)的優(yōu)良品質(zhì),特制定以下實驗規(guī)則:

1、實驗前必須充分預習,完成指定的預習任務。預習要求如下:

(1)認真閱讀指導書,進行必要的設計與計算。(2)熟悉實驗內(nèi)容。

(3)預先復習,并按要求編寫程序。(4)未完成預習任務者不得進入實驗室。

2、遵守以下紀律:

(1)在實驗室不得做和實驗無關(guān)的事情。

(2)進行任課老師指定內(nèi)容以外的實驗,必須經(jīng)指導教師同意。(3)遵守紀律,不遲到。

(4)保持實驗室內(nèi)安靜、整潔,愛護公物,不許亂寫亂畫。

實驗環(huán)境。

本實驗在386以上的微機上進行,運行環(huán)境為vc6.0。

實驗報告要求。

1、實驗題目2.實驗目的3.實驗環(huán)境。

4.實驗內(nèi)容與完成情況(可以附上自主設計的源程序)5.出現(xiàn)的問題及對問題的解決方案6.實驗思考:(學生對本次實驗的收獲的總結(jié))。

實驗一單鏈表。

(一)一、實驗目的。

掌握線性表的鏈式存儲結(jié)構(gòu)及其基本操作。

二、預習要求。

1、看懂書上的算法,深入理解鏈表的物理存儲模式和邏輯模式。

2、根據(jù)要求,編寫程序準備上機調(diào)試。

三、實驗內(nèi)容。

實現(xiàn)一個簡單的學生信息管理系統(tǒng),該系統(tǒng)的功能有:

1、利用單鏈表建立學生基本信息表。

2、瀏覽每個學生的信息。

3、根據(jù)學號查詢某個學生的基本信息。

4、添加學生信息到單鏈表中。

5、刪除一個學生的信息。

四、實現(xiàn)提示。

設計結(jié)點的結(jié)構(gòu)體類型,包括學生的學號、姓名、年齡、性別;要求設計一個簡單的菜單界面,根據(jù)需要選擇所要進行的操作;構(gòu)造函數(shù),每一個函數(shù)實現(xiàn)上述的一個功能。

實驗二單鏈表。

(二)一、實驗目的。

掌握線性表的鏈式存儲結(jié)構(gòu)及其基本操作。

二、預習要求。

1、看懂書上的算法,深入理解鏈表的物理存儲模式和邏輯模式。

2、根據(jù)要求,編寫程序準備上機調(diào)試。

三、實驗內(nèi)容。

1、實現(xiàn)單鏈表的就地逆置。

2、建立兩個非遞減有序單鏈表,然后合并成一個非遞減鏈表。

3、建立兩個非遞減有序單鏈表,然后合并成一個非遞增鏈表。

4、編寫一個主函數(shù),調(diào)試上述算法。

四、選做題、思考題。

1、如何用帶表頭結(jié)點的單鏈表作為多項式的存儲表示,實現(xiàn)兩個多項式的相加。

2、約毖夫環(huán)的實現(xiàn)。

3、如何利用文件實現(xiàn)學生信息的存取。

實驗三棧。

一、實驗目的。

深入了解并掌握棧的特性及其在實際中的應用;熟練掌握棧的算法實現(xiàn);運用棧操作求解實際問題。

二、預習要求。

1、看懂書上的算法,深入理解棧的特性和存儲結(jié)構(gòu),以便在實際問題背景下靈活運用。

2、根據(jù)要求,編寫程序準備上機調(diào)試。

三、實驗內(nèi)容。

利用棧實現(xiàn)數(shù)據(jù)的分類,要求當輸入為偶數(shù)時進棧1,當輸入為奇數(shù)時進棧2,最后分別從棧1和棧2輸出偶數(shù)和奇數(shù)序列。

四、實現(xiàn)提示。

1、開辟一個連續(xù)的存儲空間,實現(xiàn)兩個棧順序存儲空間的共享;分別在兩端設置棧頂指針,并按要求實現(xiàn)棧操作。

2、采用順序存儲實現(xiàn)棧的初始化、入棧、出棧操作。

五、選做題、思考題。

1、兩棧空間共享時,棧滿的條件是什么?

2、為停車場編制進行管理的模擬程序(習題集p96,2.1)。

3、編寫程序,利用棧實現(xiàn)表達式求值。

實驗四二叉樹。

一、實驗目的。

通過實踐掌握二叉樹的存儲結(jié)構(gòu)和遍歷思想;掌握二叉樹的常見算法的程序?qū)崿F(xiàn)。

二、預習要求。

二叉樹的三種遍歷方法。

三、實驗內(nèi)容。

1、輸入字符序列,建立二叉鏈表。

2、利用棧,編寫非遞歸算法,編程實現(xiàn)二叉樹的中序遍歷。

3、求二叉樹的葉子結(jié)點個數(shù)。

4、在主函數(shù)中設計一個簡單的菜單,分別調(diào)試上述算法。

四、選做題、思考題。

1、如何實現(xiàn)二叉樹的后序遍歷(非遞歸)。

2、如何求二叉樹的高度。

實驗五最短路徑(旅游景點導游咨詢模擬)。

一、實驗目的。

利用圖的最短路徑原理為用戶提供路徑咨詢,掌握求最短路徑的算法并編程實現(xiàn)。

二、預習要求。

學習了解圖的存儲結(jié)構(gòu),掌握求最短路徑的兩種算法。

三、實驗內(nèi)容。

設計一個旅游景點導游模擬程序,為來訪的客人提供景點最短路徑的信息查詢服務,任意選取n城市,構(gòu)成一個有向帶權(quán)圖,圖中頂點表示城市,邊上的權(quán)值表示兩點間的距離,根據(jù)用戶指定的始點和終點輸出相應的最短路徑。

四、實現(xiàn)提示。

咨詢以用戶和計算機的對話方式進行,由用戶輸入起始點和終點,輸出信息:最短路徑是多少?并指出所經(jīng)過的城市。存儲結(jié)構(gòu)可選用鄰接矩陣。

五、選做題、思考題。

1.如何實現(xiàn)對城市信息進行編輯(如:添加或刪除)的功能。

2.用鄰接表作存儲結(jié)構(gòu),求一指定景點出發(fā),到其余各景點的最短路徑。

實驗六內(nèi)部排序。

一、實驗目的。

直觀感受算法的關(guān)鍵字比較次數(shù)和關(guān)鍵字移動次數(shù)。

二、預習要求。

1、常見的排序算法(插入排序、交換排序、選擇排序、歸并排序、基數(shù)排序等)的思想、特點及其適用條件。

2、根據(jù)要求,編寫程序準備上機調(diào)試。

三、實驗內(nèi)容。

1、對直接插入排序和簡單選擇排序算法進行關(guān)鍵字比較次數(shù)和關(guān)鍵字移動次數(shù)的比較。

2、利用鏈式存儲結(jié)構(gòu),編寫程序,實現(xiàn)直接插入排序和冒泡排序。

四、實現(xiàn)提示。

測試數(shù)據(jù)可以為幾組典型的數(shù)據(jù):正序、逆序、亂序。

五、選做題、思考題。

1、快速排序算法的非遞歸實現(xiàn)。

2、結(jié)合實驗,理解針對不同待排元素的特點而選擇不同排序方法的重要性。

3、如何對本實驗進行時間、空間的復雜度分析。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇五

算法與數(shù)據(jù)結(jié)構(gòu)這一門課程,就是描述了數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲結(jié)構(gòu),以及數(shù)據(jù)的運算集合在計算機中的運用和體現(xiàn)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)與數(shù)據(jù)之間的邏輯結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)就包含了順序存儲、鏈式存儲、索引存儲和散列存儲。在這學期當中,老師給我們主要講了順序存儲和鏈式存儲。最后數(shù)據(jù)的運算集合就是對于一批數(shù)據(jù),數(shù)據(jù)的運算是定義在數(shù)據(jù)的邏輯結(jié)構(gòu)之上的,而運算的具體實現(xiàn)依賴于數(shù)據(jù)的存儲結(jié)構(gòu)。

通過這學期的學習,讓我在去年c語言的基礎上對數(shù)據(jù)與數(shù)據(jù)之間的邏輯關(guān)系有了更深的理解和認識。以前在學matlab這一課程的時候,我們?nèi)绻獙崿F(xiàn)兩個數(shù)的加減乘除,或者一系列復雜的數(shù)據(jù)運算,就直接的調(diào)用函數(shù)就行,套用規(guī)則符號和運算格式,就能立馬知道結(jié)果。在學習c語言這一課程時,我們逐漸開始了解函數(shù)的調(diào)用的原理,利用子函數(shù)中包含的運算規(guī)則,從而實現(xiàn)函數(shù)的功能。現(xiàn)今學習了算法,讓我更深層次的知道了通過順序表、指針、遞歸,能讓數(shù)據(jù)算法的實現(xiàn)更加的簡潔,明了,更易于理解。摒棄了數(shù)據(jù)的冗雜性。

在本書第二章中,主要介紹了順序表的實現(xiàn)以及運用。順序表中我認為最重要的是一個實型數(shù)組,和順序表的表長,不論是在一個數(shù)據(jù)的倒置、插入、刪除以及數(shù)據(jù)的排序過程中,都能將數(shù)據(jù)依次存入數(shù)組當中,利用數(shù)組下標之間的關(guān)系,就能實現(xiàn)數(shù)據(jù)的一系列操作了。在存儲棧中,給我留下最深刻的映像就是“先進后出”,由于它特殊的存儲特性,所以在括號的匹配,算術(shù)表達式中被大量應用。在存儲隊列之中,數(shù)據(jù)的刪除和存儲分別在表的兩端進行操作,所以存儲數(shù)據(jù)很方便。為節(jié)省隊列浪費閑置空間的這一大缺點,所以引入了循環(huán)隊列這一概念,很好用。

在第三章中,主要講的是鏈式存儲特性。它最突出的優(yōu)點就是可以選擇連續(xù)或者不連續(xù)的存儲空間都行。所以,不管是數(shù)據(jù)在插入或者刪除一個數(shù)據(jù)時,會很方便,不會像順序表那樣,要移動數(shù)組中的諸多元素。所以鏈表利用指針能很方便的進行刪除或者插入操作。而鏈式在棧和隊列的基礎上,也有了多方面的應用,所以在這些方面有了更多的應用。

第四章字符串中,基本的數(shù)組內(nèi)部元素的排序和字符串的匹配大部分代碼自己還是能夠理解,能夠看懂,如果真的要將所學的大量運用于實踐的話,那就要多花些功夫和時間了。在對稱矩陣的壓縮,三角矩陣的壓縮,稀疏矩陣在存儲中能夠合理的進行,能大大提高空間的開支。

在第五章遞歸當中,就是在函數(shù)的定義之中出現(xiàn)了自己本身的調(diào)用,稱之為遞歸。而遞歸設計出來的程序,具有結(jié)構(gòu)清晰,可讀性強,便于理解等優(yōu)點。但是由于遞歸在執(zhí)行的過程中,伴隨著函數(shù)自身的多次調(diào)用,因而執(zhí)行效率較低。如果要在追求執(zhí)行效率的情況下,往往采用非遞歸方式實現(xiàn)問題的算法程序。

在第六章數(shù)型結(jié)構(gòu)當中,這是區(qū)別于線性結(jié)構(gòu)的另一大類數(shù)據(jù)結(jié)構(gòu),它具有分支性和層次性。它是數(shù)據(jù)表示,信息組織和程序設計的基礎和工具。在本章中,映像深刻的是樹的存儲結(jié)構(gòu)。有雙親表示法,孩子表示法,以及孩子兄弟表示法。在表示怎樣存儲數(shù)據(jù)之后,接著要從數(shù)型結(jié)構(gòu)中將數(shù)據(jù)讀取出來,于是,有了樹的遍歷,在遍歷當中,又分為前序、中序和后序遍歷,這三種遍歷各有各的特點。

在第七章中,說到了樹的擴展---二叉樹。二叉樹不同一般的樹型結(jié)構(gòu)的另一種重要的非線性結(jié)構(gòu),它是處理兩種不同的數(shù)據(jù)結(jié)構(gòu),許多涉及樹的算法采用二叉樹表示和處理更加便捷和方便。其他的也是和一般的二叉樹差不多。還多了一個樹、森林和二叉樹之間的轉(zhuǎn)換。

第八章的圍繞著圖來展開,它是一種復雜的非線性結(jié)構(gòu),在人工智能、網(wǎng)絡工程、數(shù)學、并行計算和工業(yè)設計有著廣泛的應用。圖最重要的由一個非空的頂點集合和一個描述頂點之間的多對多關(guān)系的邊集合組成的一種數(shù)據(jù)結(jié)構(gòu)。圖的存儲室通過鄰接矩陣老存儲圖的信息。而圖的讀取是通過深度優(yōu)先遍歷和廣度優(yōu)先遍歷實現(xiàn)。生成最小生成樹有prim算法和kruskal算法,相對于這兩種算法,后一種算法要更加易于理解。

在考試的時候,我以為老師只會出題作業(yè)部分。然后書中有一小部分就沒看,但是題中出現(xiàn)了一個二叉樹轉(zhuǎn)換為森林的時候,我有印象,但就是沒思路想法了,就沒做。從中我真的理解了老師說的,考試不代表學習的結(jié)束?;蛘吣悻F(xiàn)在看的內(nèi)容在生活中學習中暫時沒有太大的作用,但是到了某一特定的環(huán)境條件下,總會有作用。所以,學習是一個積累的過程,不懈怠,踏實的走下去,你才會有所收獲。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇六

數(shù)據(jù)結(jié)構(gòu)與算法是計算機程序設計的重要理論技術(shù)基礎,它不僅是計算機科學的核心課程,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課??偟膩碚f感觸還是比較深的,剛開始上的時候還蠻簡單的,越到后面感覺越難,算法也更復雜了,有時候甚至聽不懂,老師上課時講的也蠻快的,所以只能靠課下下功夫了。下面是我對本學期學習這門課的總結(jié)。

第一章的數(shù)據(jù)結(jié)構(gòu)和算法的引入,介紹了數(shù)據(jù)和數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)、算法描述工具、算法和算法評價四個方面的知識。

第二章具體地介紹了順序表的概念、基本運算及其應用?;具\算有:初始化表、求表長、排序、元素的查找、插入及刪除等。元素查找方法有:簡單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等。最后介紹了順序串的概念,重點在于串的模式匹配。

第三章主要介紹的是線性邏輯結(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)應用問題,在此基礎上介紹了鏈串的相關(guān)知識。在應用方面有多項式的相加問題、歸并問題、箱子排序問題和鏈表在字符處理方面的應用問題等。本章未完全掌握的是循環(huán)鏈表的算法問題和c的描述。

第四章介紹在兩種不同的存儲結(jié)構(gòu)下設計的堆棧,即順序棧和鏈棧的相關(guān)知識,了解堆棧的相關(guān)應用,掌握應用堆棧來解決實際問題的思想及方法。本章主要內(nèi)容是順序棧和鏈棧的概念、數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)定義和基本運算算法及其性能分析。本章堆棧算法思想較為簡單,所以能較好掌握。

第五章主要介紹順序存儲和鏈接存儲方法下的兩種隊列、順序(循環(huán))隊列和鏈隊列的數(shù)據(jù)結(jié)構(gòu)、基本運算及其性能分析以及應用。順序隊列(重點是循環(huán)隊列)和鏈隊列的概念、數(shù)據(jù)類型描述、數(shù)據(jù)結(jié)構(gòu)和基本運算算法及其性能分析等。本章同堆棧有點類似,算法思想較為簡單,所以能較好掌握;但難點重在循環(huán)隊列隊空、隊滿的判斷條件問題。

第六章“特殊矩陣、廣義表及其應用”將學習數(shù)組、稀疏矩陣和廣義表的基本概念,幾種特殊矩陣的存儲結(jié)構(gòu)及其基本運算,在此基礎上學習特殊矩陣的計算算法與廣義表應用等相關(guān)問題。本章的重點是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)及其基本運算算法。掌握了特殊矩陣的壓縮存儲結(jié)構(gòu),在該存儲結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計算和廣義表的存儲結(jié)構(gòu)。

第七章二叉樹及其應用。分為二叉樹的基本概念、二叉樹存儲結(jié)構(gòu)、二叉樹的遍歷算法、線索二叉樹、二叉樹的應用(哈夫曼樹、二叉排序樹、堆和堆排序、基本算法)。基本算法包括二叉樹的建立、遍歷、線索化等算法。在此基礎上,介紹二叉樹的一些應用問題,包括哈夫曼編碼問題、(平衡)二叉排序樹問題和堆排序問題等。

第八章說的是樹和森林,首先我們要知道樹與二叉樹是不同的概念。課本介紹了樹和森林的概念、遍歷和存儲結(jié)構(gòu),還有樹、森林和二叉樹的相互關(guān)系,樹或森林怎樣轉(zhuǎn)化成二叉樹,二叉樹又如何轉(zhuǎn)換為樹和森林等算法。

第九章“散列結(jié)構(gòu)及其應用”是邏輯結(jié)構(gòu)“集合型”的數(shù)據(jù)元素在散列存儲方法下的數(shù)據(jù)結(jié)構(gòu)及其應用知識內(nèi)容。主要介紹散列函數(shù)的概念、散列結(jié)構(gòu)的概念、散列存儲結(jié)構(gòu)的概念---散列表、散列函數(shù)和散列表中解決沖突的處理方法---開放定址法、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,所以掌握不太好。

第十章圖及其應用。分為圖的概念、圖的存儲結(jié)構(gòu)及其基本算法、圖的遍歷及算法、有向圖的連通性和最小生成樹、圖的最小生成樹、非連通圖的生成森林算法、最短路徑、有向無環(huán)圖及其應用。

二、對各知識點的掌握情況。

我對各知識點的掌握情況總結(jié)如下:

對于第一章對數(shù)據(jù)結(jié)構(gòu)的概念理解頗深,大概是每次都要談論到吧。對算法的時間性能,空間性能基本了解。這些在后面的章節(jié)都會有運用。第二章本章重點和難點在查找和排序問題的算法思想上,6種排序方法的性能比較。本章未掌握的為希爾排序、快速排序、歸并排序的時間復雜度分析。第三章,對鏈表掌握還好,對其數(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)換算法思想基本掌握。第九章散列的一些知識,沒有深入學習,大概了解了散列存儲結(jié)構(gòu)散列表,散列函數(shù),沖突的處理方法。第十章了解了圖的逆鄰接表的存儲結(jié)構(gòu),關(guān)鍵路徑求解算法未能掌握好,不能靈活運用圖的不同數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復雜的應用問題。

三、學習體會。

剛剛接觸這門課時,看到課本中全是算法,當時就暈了,因為我的c語言學的不好,我擔心會影響這門課的學習,后來上課時老師說學習這門課的基礎是c語言,所以我當時就決定一定要好好補補,爭取不被拖后腿,在學習這門課的期間,也遇到了不少問。但是通過學習數(shù)據(jù)結(jié)構(gòu)與算法,讓我對程序有了新的認識,也有了更深的理解。同時,也讓我認識到,不管學習什么,概念是基礎,所有的知識框架都是建立在基礎概念之上的,所以,第一遍看課本要將概念熟記于心,然后構(gòu)建知識框架。并且,對算法的學習是學習數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵。在第二遍看課本的過程中,要注重對算法的掌握。對于一個算法,讀一遍可能能讀懂,但不可能完全領會其中的思想。掌握一個算法,并不是說將算法背過,而是掌握算法的思想。我們需要的是耐心。每看一遍就會有這一遍的收獲。讀懂算法之后,自己再默寫算法,寫到不會的地方,看看課本想想自己為什么沒有想到。對算法的應用上,學習算法的目的是利用算法解決實際問題。會寫課本上已有的算法之后,可以借其思想進行擴展,逐步提高編程能力。

四、對課程教學的建議。

1、課程課時較緊,課堂上的練習時間較少,講解的東西越多,頭腦有時就很混亂。

2、感覺上課時的氣氛不是很好,雖然大部分人都在聽,可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,可以是大家都非常關(guān)心的一些內(nèi)容,這樣既讓大家能在思考之余有一個放松,也能夠提高學生的學習積極性和學習效率。

3、學習的積極性很重要,有時候我們花了很長時間去寫實驗報告,也很認真的去理解去掌握,可是最后實驗報告可能就只得了一個c,抄的人反而得a,這樣的話很容易打擊學生的積極性,在后面的實驗報告中沒動力再去認真寫。所以希望老師能在這方面有所調(diào)整。

4、雖然講課的時間很緊,但是還是希望老師能在講述知識點的時候能運用實際的調(diào)試程序來給我們講解,這樣的話能讓我們對這些內(nèi)容有更深刻的印象和理解。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇七

完成了這次的二元多項式加減運算問題的課程設計后,我的心得體會很多,細細梳理一下,有以下幾點:

1、程序的編寫中的語法錯誤及修改。

因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應的將其解決。

2、程序的設計中的邏輯問題及其調(diào)整。

我在設計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。

另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設計中涉及了數(shù)組和鏈表的綜合運用,導致反復修改了很長的時間才完成了一個加法的設計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當然,這樣也可以理解成當系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。

我在設計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式b的所有項取負再用加法函數(shù)即可,可見算法的重要性不低于程序本身。

3、程序的調(diào)試中的經(jīng)驗及體會。

我在調(diào)試過程中,發(fā)生了許多小細節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓就是寫程序的時候,一定要仔細、認真、專注。

我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風格,并且養(yǎng)成隨手加注釋的習慣,就能減少這些不必要的反復和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎上更加精確。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇八

在兩周的學習和實踐過程中,通過解決學生搭配問題這一實際問題,讓我對循環(huán)隊列有了更深的了解,對數(shù)據(jù)結(jié)構(gòu)也產(chǎn)生了更加濃厚的興趣,同時也是對我解決實際問題能力的一次提升。

記得王教授給我們上課時就要不斷的通過走算法的方式,掌握所學習的數(shù)據(jù)結(jié)構(gòu)、算法等,而上機則能進一步鞏固自己所學的知識、提高自己的學習能力。在上機的同時也改正了自己對某些算法的錯誤使用,使自己能在通過程序解決問題時抓住關(guān)鍵算法,能夠很好的夠造出解決問題的數(shù)據(jù)結(jié)構(gòu)、算法的設計思想和流程圖,并用c語言描繪出關(guān)鍵算法。

首先對于這次的課程設計題目而言,主要是對隊列這一知識點的運用。首先是對問題的分析,明白題目的具體要求,即將現(xiàn)實生活中的舞會搭配問題,用鏈隊列這一數(shù)據(jù)結(jié)構(gòu)描繪出來。用兩個鏈隊列boy和girl分別代表男生和女生,當播放每一首歌曲時,便可使兩隊各有一元素出隊列,這樣就可以模擬出搭配情況。同時,由于題目要求系統(tǒng)能模擬動態(tài)地顯示出上述過程,所以就考慮調(diào)用一個延遲函數(shù)sleep(),使歌曲之間有一段時間間隔,即模擬了顯示中的那一動態(tài)過程。其次便是在實現(xiàn)過程中遇到的具體細節(jié)問題,比如一開始設計了兩個出對函數(shù)dequeue(),讓首元素結(jié)點出隊,然后調(diào)用入隊函數(shù)add(),使其入隊到隊尾,但在測試時發(fā)現(xiàn),如果輸入的人數(shù)為2,那么在到第三首歌曲時程序便會終止;經(jīng)過分析發(fā)現(xiàn)是這兩個函數(shù)的調(diào)用,使數(shù)據(jù)出錯,所以就將這兩個出對函數(shù)用一個函數(shù)change()代替,這個函數(shù)能實現(xiàn)將首元素結(jié)點移到隊尾的功能。這樣不僅沒有了之前的問題,而且使程序更加易懂。在這些細節(jié)方面的具體設計,是對個人分析問題、解決問題能力的一個很好的鍛煉。通過這個過程的鍛煉,不僅能對所學的知識點有很好的掌握,而且還是對個人能力的很好的訓練。

其次,以前我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。讓自己有一定的能力去改正一些常見的錯誤語法,很高興這兩周的學習讓我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)有了新的認識,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。在這次課程設計的實驗中,我收獲了許多知識,通過查找大量資料,請教老師,以及不懈的努力,也培養(yǎng)了獨立思考、動手操作的能力。我也學會了許多學習和解決實際問題的方法,讓我受益匪淺。課程設計對我來說,趣味性強,不僅鍛煉能力,而且可以學到很多東西,在與老師和同學的交流過程中,互動學習,將知識融會貫通,也增強了我和同學之間的團隊合作的能力。讓我們知道只要努力,集中精力解決問題,一定會有收獲的,過程也是很重要的。

在這次課程設計中我們要學會利用時間,在規(guī)定的時間內(nèi)完成我們的任務,要逐漸養(yǎng)成用c語言編寫程序的良好習慣。這些對我來說都是一種鍛煉,一個知識積累的過程,一種能力的提高。要打好基礎,才能用更好的辦法,更簡潔明了的程序解決實際問題,只有這樣才能進一步的取得更好的成績。我們會更加努力,努力的去彌補自己的缺點,發(fā)展自己的優(yōu)點,去充實自己,只有在了解了自己的長短之后,我們會更加珍惜擁有的,更加努力的去完善它,增進它。

當然我現(xiàn)在的水平還是很有限,但我還會繼續(xù)努力的,在解決實際問題時如果遇到了難題,我們要學會去查找大量的有關(guān)這方面的資料,還要借助于網(wǎng)絡不斷擴大自己的知識面和閱讀量。這樣也可以鍛煉我們的自主學習能力和解決問題的能力,學到了許多以前沒學到的東西。

在課程設計中的程序都比較復雜,所以需要我們要更加地細心,認真的完成每一步的操作,修改語法,按照老師的指導思想來完成。還記得一開始拿到題目時我們的一臉茫然,而現(xiàn)在是收獲滿滿的自信,每個人都或多或少有所收獲,也讓我們對程序設計和算法有了進一步理解、認識。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇九

考試形式:半開卷考試講課對象:計算機本科。

建議教材:《數(shù)據(jù)結(jié)構(gòu)》(c語言版)陳明編著清華大學出版社。

課程簡介:數(shù)據(jù)結(jié)構(gòu)課程介紹如何組織各種數(shù)據(jù)在計算機中的存儲、傳遞和轉(zhuǎn)換。內(nèi)容包括:數(shù)組、鏈接表、棧和隊列、串、樹與森林、圖、排序、查找、索引與散列結(jié)構(gòu)等。課程以結(jié)構(gòu)化程序設計語言c語言作為算法的描述工具,強化數(shù)據(jù)結(jié)構(gòu)基本知識和結(jié)構(gòu)化程序設計基本能力的雙基訓練。為后續(xù)計算機專業(yè)課程的學習打下堅實的基礎。

二、課程的教學目標。

“數(shù)據(jù)結(jié)構(gòu)”是計算機相關(guān)專業(yè)的一門重要專業(yè)基礎課,是計算機學科的公認主干課。課程內(nèi)容由數(shù)據(jù)結(jié)構(gòu)和算法分析初步兩部分組成。

數(shù)據(jù)結(jié)構(gòu)是針對處理大量非數(shù)值性程序問題而形成的一門學科,內(nèi)涵豐富、應用范圍廣。它既有完整的學科體系和學科深度,又有較強的實踐性。通過課程的學習,應使學生理解和掌握各種數(shù)據(jù)結(jié)構(gòu)(物理結(jié)構(gòu)和邏輯結(jié)構(gòu))的概念及其有關(guān)的算法;熟悉并了解目前常用數(shù)據(jù)結(jié)構(gòu)在計算機諸多領域中的基本應用。

算法分析強調(diào)最基本的算法設計技術(shù)和分析方法。要求學生從算法和數(shù)據(jù)結(jié)構(gòu)的相互依存關(guān)系中把握應用算法設計的藝術(shù)和技能。

經(jīng)過上機實習和課程設計的訓練,使學生能夠編制、調(diào)試具有一定難度的中型程序;以培養(yǎng)良好的軟件工程習慣和面向?qū)ο蟮能浖季S方法。

“數(shù)據(jù)結(jié)構(gòu)”的前序課是《離散數(shù)學》、《c語言程序設計與算法初步》。

三、理論教學內(nèi)容的基本要求及學時分配。

1、序論(2學時)學習目標:熟悉各類文件的特點,構(gòu)造方法以及如何實現(xiàn)檢索,插入和刪除等操作。

重點與難點:本章無。

知識點:數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、抽象數(shù)據(jù)類型、算法及其設計原則、時間復雜度、空間復雜度。

2、線性表(4學時)。

學習目標:

(4)結(jié)合線性表類型的定義增強對抽象數(shù)據(jù)類型的理解。

重點與難點:鏈表是本章的重點和難點。扎實的指針操作和內(nèi)存動態(tài)分配的編程技術(shù)是學好本章的基本要求,分清鏈表中指針p和結(jié)點*p之間的對應關(guān)系,區(qū)分鏈表中的頭結(jié)點、頭指針和首元結(jié)點的不同所指以及循環(huán)鏈表、雙向鏈表的特點等。

知識點:線性表、順序表、鏈表、有序表。

3、棧和隊列(4學時)。

學習目標:

(1)掌握棧和隊列這兩種抽象數(shù)據(jù)類型的特點,并能在相應的應用問題中正確選用它們;

(2)熟練掌握棧類型的兩種實現(xiàn)方法;

(3)熟練掌握循環(huán)隊列和鏈隊列的基本操作實現(xiàn)算法;(4)理解遞歸算法執(zhí)行過程中棧的狀態(tài)變化過程。

重點與難點:棧和隊列是在程序設計中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),因此本章的學習重點在于掌握這兩種結(jié)構(gòu)的特點,以便能在應用問題中正確使用。

知識點:順序棧、鏈棧、循環(huán)隊列、鏈隊列。

4、串(2學時)。

(2)理解串類型的各種存儲表示方法;(3)理解串匹配的各種算法。

重點和難點:相對于其它各個知識點而言,本章非整個課程的重點,鑒于串已是多數(shù)高級語言中已經(jīng)實現(xiàn)的數(shù)據(jù)類型,因此本章重點僅在于了解串類型定義中各基本操作的定義以及串的實現(xiàn)方法,并學會利用這些基本操作來實現(xiàn)串的其它操作。本章的難點是理解實現(xiàn)串匹配的kmp算法的思想。

知識點:串的類型定義、串的存儲表示、串匹配、kmp算法。

5、數(shù)組和廣義表(4學時)。

學習目標:

(2)掌握特殊矩陣的存儲壓縮表示方法;

(3)理解稀疏矩陣的兩類存儲壓縮方法的特點及其適用范圍,領會以三元組表示稀疏矩陣時進行矩陣運算所采用的處理方法。

重點和難點:本章重點是學習數(shù)組類型的定義及其存儲表示。

知識點:數(shù)組的類型定義、數(shù)組的存儲表示、特殊矩陣的壓縮存儲表示方法、隨機稀疏矩陣的壓縮存儲表示方法。

6、樹和二叉樹(8學時)。

學習目標:

(3)熟練掌握二叉樹的各種遍歷算法,并能靈活運用遍歷算法實現(xiàn)二叉樹的其它操作;

(4)理解二叉樹的線索化過程以及在中序線索化樹上找給定結(jié)點的前驅(qū)和后繼的方法;

(7)了解最優(yōu)樹的特性,掌握建立最優(yōu)樹和赫夫曼編碼的方法。

重點和難點:二叉樹和樹的遍歷及其應用是本章的學習重點,而編寫實現(xiàn)二叉樹和樹的各種操作的遞歸算法也恰是本章的難點所在。

知識點:樹的類型定義、二叉樹的類型定義、二叉樹的存儲表示、二叉樹的遍歷以及其它操作的實現(xiàn)、線索二叉樹、樹和森林的存儲表示、樹和森林的遍歷以及其它操作的實現(xiàn)、最優(yōu)樹和赫夫曼編碼。

7、圖(8學時)。

學習目標:

(1)領會圖的類型定義;

(2)熟悉圖的各種存儲結(jié)構(gòu)及其構(gòu)造算法,了解各種存儲結(jié)構(gòu)的特點及其選用原則;

(3)熟練掌握圖的兩種遍歷算法;(4)理解各種圖的應用問題的算法。

重點和難點:圖的應用極為廣泛,而且圖的各種應用問題的算法都比較經(jīng)典,因此本章重點在于理解各種圖的算法及其應用場合。

知識點:圖的類型定義、圖的存儲表示、圖的深度優(yōu)先搜索遍歷和圖的廣度優(yōu)先搜索遍歷、無向網(wǎng)的最小生成樹、最短路徑、拓撲排序、關(guān)鍵路徑。

8、查找(6學時)。

學習目標:

(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學時)。

學習目標:

(3)理解排序方法“穩(wěn)定”或“不穩(wěn)定”的含義,弄清楚在什么情況下要求應用的排序方法必須是穩(wěn)定的。

重點和難點:希爾排序、快速排序、堆排序和歸并排序等高效方法是本章的學習重點和難點。

知識點:排序、直接插入排序、折半插入排序、表插入排序、希爾排序、起泡排序、快速排序、簡單選擇排序、堆排序、2-路歸并排序、基數(shù)排序、排序方法的綜合比較。

10、文件(4學時)。

學習目標:熟悉各類文件的特點,構(gòu)造方法以及如何實現(xiàn)檢索,插入和刪除等操作。

重點和難點:本章重點在于了解各種文件的結(jié)構(gòu)特點及其適用場合。知識點:順序文件、索引文件、b-樹、b+樹、索引順序文件、vsam文件、散列文件、多關(guān)鍵字文件。

四、實驗教學內(nèi)容的基本要求及學時分配。

1、線性表(1學時)實驗一順序表的應用實驗二鏈表的應用。

要求:理解線性表的定義及其運算;理解順序表和鏈表的定義,組織形式,結(jié)構(gòu)特征和類型說明;掌握在這兩種表上實現(xiàn)的插入,刪除和按值查找的算法;了解循環(huán)鏈表,雙(循環(huán))鏈表的結(jié)構(gòu)特點和在其上施加的插入,刪除等操作。

2、棧(0.5學時)實驗三棧的應用。

要求:理解棧的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結(jié)構(gòu)上對棧所施加的基本運算的實現(xiàn)。

3、隊列(0.5學時)實驗四隊列的應用。

要求:理解隊列的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結(jié)構(gòu)上對隊列所施加的基本運算的實現(xiàn)。

4、串(0.5學時)實驗五串的應用。

要求:了解串的定義;理解和領會串的存儲方式;掌握常用的串運算。

5、數(shù)組和廣義表(0.5學時)實驗六稀疏矩陣的應用。

要求:理解多維數(shù)組的結(jié)構(gòu)特點和在內(nèi)存中的兩種順序存儲方式;理解并掌握矩陣和特殊矩陣元素在存儲區(qū)中地址的計算;領會稀疏矩陣的壓縮方式和簡單運算;了解廣義表的定義和基本運算。

6、樹與二叉樹(4學時)實驗七樹與二叉樹的應用。

要求:理解樹的定義,術(shù)語;領會并掌握樹的各種存儲結(jié)構(gòu);熟練掌握森林與二叉樹間的相互轉(zhuǎn)換;領會樹和森林的遍歷;了解樹的簡單應用。深刻理解二叉樹的定義,性質(zhì)及其存儲方法;熟練掌握二叉樹的二叉鏈表存儲方式,結(jié)點結(jié)構(gòu)和類型定義;理解并掌握二叉樹的三種遍歷算法;掌握二叉樹的線索化方法;靈活運用二叉樹的遍歷方法解決相關(guān)的應用問題。

7、圖(3學時)實驗八圖的應用。

要求:理解圖的基本概念及術(shù)語;掌握圖的兩種存儲結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法;熟練掌握圖的兩種遍歷(深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷)的算法思想,步驟,并能列出在兩種存儲結(jié)構(gòu)上按上述兩種遍歷算法得到的序列;理解最小生成樹的概念,能按prim算法構(gòu)造最小生成樹;領會并掌握拓撲排序,關(guān)鍵路徑,最短路徑的算法思想。

8、查找(3學時)實驗九順序查找實驗十折半查找實驗十一哈希表的應用實驗十二二叉排序樹的綜合練習要求:了解查找的基本思想及查找成功和不成功的概念;掌握在順序表,有序表,索引表,散列表等上的查找方法和算法,并能求出相應的平均查找長度;理解并掌握二叉排序樹,平衡二叉樹b-樹的各種算法。

9、排序(3學時)實驗十三插入排序?qū)嶒炇倪x擇排序?qū)嶒炇迮判蚓C合練習。

要求:領會排序的基本思想和基本概念;理解并掌握插入排序,冒泡排序,快速排序,直接選擇排序,堆排序,歸并排序和基數(shù)排序的基本思想,步驟,算法及時空效率分析;了解外排序的定義和基本方法。

五、大綱說明。

1、課堂講述的論題只是核心或有特色的知識內(nèi)容,還有相當數(shù)量的篇章內(nèi)容留給學生自學,所確定的自學部分內(nèi)容亦屬考查范圍。

2、“數(shù)據(jù)結(jié)構(gòu)”課注重上機訓練,所有作業(yè)都必須配有規(guī)范的文檔。上機訓練由平時的上機訓練和小學期的實訓課程設計兩部分組成。

3、課內(nèi)學時安排說明:前8周每周4學時全為理論課,從第9周開始理論和上機為1:1,也即2學時理論,2學時上機訓練。

4、本課強調(diào)能力的培養(yǎng),期末采用半開卷考試(允許同學攜帶一頁a4紙的總結(jié)資料)。本課成績由平時作業(yè)、上機成績(30%)和期末考試(70%)合成得到,有獨到見解的作業(yè)予以適當加分。

5、主要參考書:

[2]《數(shù)據(jù)結(jié)構(gòu)(c語言版)》(含cd)嚴蔚敏吳為民編著清華大學出版社。

[3]《數(shù)據(jù)結(jié)構(gòu)習題集(c語言版)》嚴蔚敏編著清華大學出版社。

[4]《數(shù)據(jù)結(jié)構(gòu)習題解析與實訓》張世和編著清華大學出版社。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十

數(shù)據(jù)結(jié)構(gòu)是計算機科學中的重要基礎知識,它能幫助我們有效地組織和存儲數(shù)據(jù),以便更高效地進行操作和訪問。在學習數(shù)據(jù)結(jié)構(gòu)的過程中,我逐漸認識到了它的重要性和實際應用價值。下面我將結(jié)合自己的學習經(jīng)歷,分享一些關(guān)于數(shù)據(jù)結(jié)構(gòu)的心得體會。

首先,在學習數(shù)據(jù)結(jié)構(gòu)時,我意識到了算法和數(shù)據(jù)結(jié)構(gòu)之間的緊密聯(lián)系。算法是解決問題的步驟序列,在實際應用中,算法的效率取決于所選擇的數(shù)據(jù)結(jié)構(gòu)。不同的數(shù)據(jù)結(jié)構(gòu)適用于不同類型的問題,如棧適用于括號匹配、隊列適用于廣度優(yōu)先搜索等。因此,在解決問題時,選擇合適的數(shù)據(jù)結(jié)構(gòu)對算法的效率起著至關(guān)重要的作用。

其次,學習數(shù)據(jù)結(jié)構(gòu)也讓我明白了程序的內(nèi)存管理問題。在不合理的內(nèi)存分配和釋放下,程序可能產(chǎn)生內(nèi)存泄漏和內(nèi)存溢出等問題,導致程序崩潰。而數(shù)據(jù)結(jié)構(gòu)的設計和實現(xiàn)往往直接涉及到內(nèi)存的使用和管理。比如,鏈表節(jié)點的申請和釋放,樹的遍歷時需要大量的遞歸調(diào)用等。因此,合理地設計和使用數(shù)據(jù)結(jié)構(gòu)可以避免這些內(nèi)存管理問題,提高程序的穩(wěn)定性和性能。

另外,數(shù)據(jù)結(jié)構(gòu)的設計還能夠幫助我們解決實際的問題。在現(xiàn)實生活中,我們經(jīng)常會遇到需要處理大量數(shù)據(jù)的情況,如圖書館的借書管理系統(tǒng)、電商平臺的訂單處理等。如果不使用適當?shù)臄?shù)據(jù)結(jié)構(gòu),這些問題將會變得異常困難。而數(shù)據(jù)結(jié)構(gòu)提供了一種抽象的方法來解決這些問題,比如使用棧來模擬函數(shù)調(diào)用,使用哈希表來查詢數(shù)據(jù)等。掌握了數(shù)據(jù)結(jié)構(gòu),我們就可以更好地設計和實現(xiàn)這些系統(tǒng),提高程序的效率和可靠性。

此外,學習數(shù)據(jù)結(jié)構(gòu)還促使我反思程序設計的靈活性和可擴展性。在實際項目中,需求的變更和程序的擴展是常見的。而數(shù)據(jù)結(jié)構(gòu)的設計和實現(xiàn)往往也會受到這些變化的影響。因此,一個好的數(shù)據(jù)結(jié)構(gòu)應該具備良好的靈活性和可擴展性。比如,我曾經(jīng)在一個項目中使用了動態(tài)數(shù)組,當數(shù)據(jù)量變得很大時,動態(tài)數(shù)組的性能就會變得很差。后來,我使用了鏈表來替代動態(tài)數(shù)組,大大提高了程序的性能。這個經(jīng)歷讓我認識到,在設計數(shù)據(jù)結(jié)構(gòu)時,要考慮到未來的擴展和變化,選擇合適的數(shù)據(jù)結(jié)構(gòu)來滿足需求。

綜上所述,數(shù)據(jù)結(jié)構(gòu)是計算機科學中的重要學科,它在我們的日常開發(fā)工作中起著至關(guān)重要的作用。通過學習數(shù)據(jù)結(jié)構(gòu),我深刻認識到算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)聯(lián),程序的內(nèi)存管理,實際問題的解決以及程序設計的靈活性與可擴展性。數(shù)據(jù)結(jié)構(gòu)不僅是計算機科學的基礎,更是實際應用中解決問題的重要工具。通過不斷學習和實踐,我相信自己在數(shù)據(jù)結(jié)構(gòu)方面的能力將不斷提高,為解決實際問題提供更好的解決方案。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十一

時光荏苒,如白駒過隙般匆匆而去,眼看的一年實習生活馬上就要成為美好的回憶。在這短短一年的時間里我感覺自己成長了許多,從象牙塔邁出的第一步走的特別的穩(wěn)重,感謝學校給我提供了一個努力拼搏的舞臺,讓我學會了如何面對這個真實的社會,實現(xiàn)了從在校學子向職場人士的轉(zhuǎn)變。

實習是繼中考后又一個人生的十字路口,它意味著人生一個新時期的到來——告別學校走入社會。社會是個大的集合,不管是以前的學校還是現(xiàn)在的實習單位都同屬這個集合。這幾個月來,給我感覺學校純一點,單位復雜一點。不過我知道不論學校還是單位其實都是社會的縮影。實習的真正目的就是讓我們這些在校的學生走入社會。社會是形形色色、方方面面的,你要學會的是適應這個社會而不是讓這個社會適應你。

剛剛走進社會不適應是正常的。人有的時候很奇怪:心情或者更準確地說是熱情往往會因時間、環(huán)境、所經(jīng)歷的事而起伏。就像我對境界一詞的理解:人與他所受教育、所處環(huán)境、所經(jīng)歷對事物的理解、判斷、預知的程度就是這個人的境界。作為一名中專生,專業(yè)需求的建筑認識實訓開始了,我們?nèi)珜I(yè)的同學在__的各大建筑工地認識實習,對于我當初選擇土木工程這樣的專業(yè),說真的我并不知道什么是土木工程?,F(xiàn)在我對土木工程有了基本的感性認識了,我想任何事的認識都是通過感性認識上升到理性認識的,這次認識實習應該是一個鍛煉的好機會!

土木工程是建造各類工程設施的學科、技術(shù)和工程的總稱。它既指與與人類生活、生產(chǎn)活動有關(guān)的各類工程設施,如建筑公程、公路與城市道路工程、鐵路工程、橋梁工程、隧道工程等,也指應用材料、設備在土地上所進行的勘測、設計、施工等工程技術(shù)活動。

我應該知道現(xiàn)在的.我還不夠成熟,如果說人生是一片海洋,那么我應該在這片海洋里劈波斬浪,揚帆遠航而不是躲在避風港里。只要經(jīng)歷多了,我就會成熟;我就會變強。我相信。那時的成功是領導、師傅們給我鼓勵,是實習的經(jīng)歷給我力量,所以我感謝領導師傅還有我的好朋友們,也感謝學校給我這次實習的機會。一年的實習生活中,緊張過,努力過,醒悟過,開心過。這些從為有過的經(jīng)歷讓我進步了,成長了。學會了一些在學校從未學過以后也學不到的東西,也有很多的感悟。

通過本次課程設計,對圖的概念有了一個新的認識,在學習離散數(shù)學的時候,總覺得圖是很抽象的東西,但是在學習了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現(xiàn)了一個雙向圖信息的存儲。對整個程序而言,dijkstra算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設計,在前期工作中,基本都是以學習c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。不過,有了這次課程設計的經(jīng)驗和教訓,我能夠很清楚的對自己定一個合適的水平,而且在這次課程設計中我學會了運用兩個新的函數(shù)sprintf()和包涵在#include頭文件中的輸入函數(shù)。因為課程設計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十二

數(shù)據(jù)結(jié)構(gòu)是計算機科學與技術(shù)中的重要學科,它研究了如何組織和存儲數(shù)據(jù)以便高效地訪問和修改。在學習數(shù)據(jù)結(jié)構(gòu)的過程中,我深刻體會到了思政教育的重要性,也認識到了數(shù)據(jù)結(jié)構(gòu)對我們?nèi)粘I畹挠绊?。在這篇文章中,我將分享我在學習數(shù)據(jù)結(jié)構(gòu)過程中的體會和心得。

首先,學習數(shù)據(jù)結(jié)構(gòu)讓我認識到團隊合作的重要性。在實踐中,我意識到一個高效的數(shù)據(jù)結(jié)構(gòu)能夠極大地提高程序的效率。然而,實現(xiàn)一個高效的數(shù)據(jù)結(jié)構(gòu)是一項復雜的任務,需要多人的協(xié)作和努力。在團隊合作的過程中,我學會了與他人溝通、互相交流和理解,并意識到了一個好的團隊合作對于項目的成功是至關(guān)重要的。這使我深刻意識到,在生活和工作中,團隊合作能夠帶來共同的成功,也讓我更加明白了團結(jié)合作的力量。

其次,學習數(shù)據(jù)結(jié)構(gòu)讓我明白了信息的重要性。在當今信息時代,數(shù)據(jù)的重要性不言而喻。而數(shù)據(jù)結(jié)構(gòu)正是為了高效的組織和存儲數(shù)據(jù)而存在的。通過學習數(shù)據(jù)結(jié)構(gòu),我了解了不同的數(shù)據(jù)存儲和檢索方式,以及它們對于程序性能的影響。這讓我明白了合理地組織和利用數(shù)據(jù)對于提高效率和解決問題的重要性。在生活中,我也開始更加注重整理和管理個人信息,以便更好地利用它們。學習數(shù)據(jù)結(jié)構(gòu)不僅教會了我技術(shù)上的操作,更是教會了我在信息時代如何正確地利用信息。

進一步,學習數(shù)據(jù)結(jié)構(gòu)培養(yǎng)了我分析和解決問題的能力。在學習數(shù)據(jù)結(jié)構(gòu)的過程中,我面臨了許多挑戰(zhàn),需要運用所學的知識來解決問題。通過分析問題、尋找合適的數(shù)據(jù)結(jié)構(gòu)和算法,并編寫有效的代碼,我逐漸培養(yǎng)了解決問題的能力。這種能力不僅在編程中有用,更在解決現(xiàn)實生活中的問題時起到了重要的作用。我明白了問題解決的思路和方法論,并學會了在面對問題時冷靜思考和迅速響應。

最后,學習數(shù)據(jù)結(jié)構(gòu)加深了我對社會發(fā)展的思考。經(jīng)過學習,我了解到數(shù)據(jù)結(jié)構(gòu)的發(fā)展歷程和應用領域,并思考了它與社會發(fā)展的關(guān)系。數(shù)據(jù)結(jié)構(gòu)不僅為程序提供了高效的數(shù)據(jù)組織方式,還在互聯(lián)網(wǎng)、人工智能等領域扮演著重要的角色。通過學習數(shù)據(jù)結(jié)構(gòu),我對科學技術(shù)的發(fā)展有了更深入的理解,也認識到了我作為一名計算機專業(yè)學生的使命和責任。我要不斷學習和探索,為社會的發(fā)展盡自己的一份力量。

綜上所述,學習數(shù)據(jù)結(jié)構(gòu)不僅是為了技術(shù)的掌握和應用,更是為了培養(yǎng)思政教育中提倡的團隊合作、信息利用、問題解決和社會責任感。通過學習數(shù)據(jù)結(jié)構(gòu),我明白了技術(shù)與思政的緊密聯(lián)系,并在實踐中體驗到了這種聯(lián)系的重要性。因此,在今后的學習和工作中,我將更加注重培養(yǎng)思政教育所倡導的實踐能力和社會責任感,以更好地投身社會,為社會的發(fā)展作出貢獻。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十三

考試形式:半開卷考試講課對象:計算機本科。

建議教材:《數(shù)據(jù)結(jié)構(gòu)》(c語言版)陳明編著清華大學出版社。

課程簡介:數(shù)據(jù)結(jié)構(gòu)課程介紹如何組織各種數(shù)據(jù)在計算機中的存儲、傳遞和轉(zhuǎn)換。內(nèi)容包括:數(shù)組、鏈接表、棧和隊列、串、樹與森林、圖、排序、查找、索引與散列結(jié)構(gòu)等。課程以結(jié)構(gòu)化程序設計語言c語言作為算法的描述工具,強化數(shù)據(jù)結(jié)構(gòu)基本知識和結(jié)構(gòu)化程序設計基本能力的雙基訓練。為后續(xù)計算機專業(yè)課程的學習打下堅實的基礎。

二、課程的教學目標。

“數(shù)據(jù)結(jié)構(gòu)”是計算機相關(guān)專業(yè)的一門重要專業(yè)基礎課,是計算機學科的公認主干課。課程內(nèi)容由數(shù)據(jù)結(jié)構(gòu)和算法分析初步兩部分組成。

數(shù)據(jù)結(jié)構(gòu)是針對處理大量非數(shù)值性程序問題而形成的一門學科,內(nèi)涵豐富、應用范圍廣。它既有完整的學科體系和學科深度,又有較強的實踐性。通過課程的學習,應使學生理解和掌握各種數(shù)據(jù)結(jié)構(gòu)(物理結(jié)構(gòu)和邏輯結(jié)構(gòu))的概念及其有關(guān)的算法;熟悉并了解目前常用數(shù)據(jù)結(jié)構(gòu)在計算機諸多領域中的基本應用。

算法分析強調(diào)最基本的算法設計技術(shù)和分析方法。要求學生從算法和數(shù)據(jù)結(jié)構(gòu)的相互依存關(guān)系中把握應用算法設計的藝術(shù)和技能。

經(jīng)過上機實習和課程設計的訓練,使學生能夠編制、調(diào)試具有一定難度的中型程序;以培養(yǎng)良好的軟件工程習慣和面向?qū)ο蟮能浖季S方法。

“數(shù)據(jù)結(jié)構(gòu)”的前序課是《離散數(shù)學》、《c語言程序設計與算法初步》。

三、理論教學內(nèi)容的基本要求及學時分配。

1、序論(2學時)學習目標:熟悉各類文件的特點,構(gòu)造方法以及如何實現(xiàn)檢索,插入和刪除等操作。

重點與難點:本章無。

知識點:數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、抽象數(shù)據(jù)類型、算法及其設計原則、時間復雜度、空間復雜度。

2、線性表(4學時)。

學習目標:

(4)結(jié)合線性表類型的定義增強對抽象數(shù)據(jù)類型的理解。

重點與難點:鏈表是本章的重點和難點。扎實的指針操作和內(nèi)存動態(tài)分配的編程技術(shù)是學好本章的基本要求,分清鏈表中指針p和結(jié)點*p之間的對應關(guān)系,區(qū)分鏈表中的頭結(jié)點、頭指針和首元結(jié)點的不同所指以及循環(huán)鏈表、雙向鏈表的特點等。

知識點:線性表、順序表、鏈表、有序表。

3、棧和隊列(4學時)。

學習目標:

(1)掌握棧和隊列這兩種抽象數(shù)據(jù)類型的特點,并能在相應的應用問題中正確選用它們;

(2)熟練掌握棧類型的兩種實現(xiàn)方法;

(3)熟練掌握循環(huán)隊列和鏈隊列的基本操作實現(xiàn)算法;(4)理解遞歸算法執(zhí)行過程中棧的狀態(tài)變化過程。

重點與難點:棧和隊列是在程序設計中被廣泛使用的兩種線性數(shù)據(jù)結(jié)構(gòu),因此本章的學習重點在于掌握這兩種結(jié)構(gòu)的特點,以便能在應用問題中正確使用。

知識點:順序棧、鏈棧、循環(huán)隊列、鏈隊列。

4、串(2學時)。

(2)理解串類型的各種存儲表示方法;(3)理解串匹配的各種算法。

重點和難點:相對于其它各個知識點而言,本章非整個課程的重點,鑒于串已是多數(shù)高級語言中已經(jīng)實現(xiàn)的數(shù)據(jù)類型,因此本章重點僅在于了解串類型定義中各基本操作的定義以及串的實現(xiàn)方法,并學會利用這些基本操作來實現(xiàn)串的其它操作。本章的難點是理解實現(xiàn)串匹配的kmp算法的思想。

知識點:串的類型定義、串的存儲表示、串匹配、kmp算法。

5、數(shù)組和廣義表(4學時)。

學習目標:

(2)掌握特殊矩陣的存儲壓縮表示方法;

(3)理解稀疏矩陣的兩類存儲壓縮方法的特點及其適用范圍,領會以三元組表示稀疏矩陣時進行矩陣運算所采用的處理方法。

重點和難點:本章重點是學習數(shù)組類型的定義及其存儲表示。

知識點:數(shù)組的類型定義、數(shù)組的存儲表示、特殊矩陣的壓縮存儲表示方法、隨機稀疏矩陣的壓縮存儲表示方法。

6、樹和二叉樹(8學時)。

學習目標:

(3)熟練掌握二叉樹的各種遍歷算法,并能靈活運用遍歷算法實現(xiàn)二叉樹的其它操作;

(4)理解二叉樹的線索化過程以及在中序線索化樹上找給定結(jié)點的前驅(qū)和后繼的方法;

(7)了解最優(yōu)樹的特性,掌握建立最優(yōu)樹和赫夫曼編碼的方法。

重點和難點:二叉樹和樹的遍歷及其應用是本章的學習重點,而編寫實現(xiàn)二叉樹和樹的各種操作的遞歸算法也恰是本章的難點所在。

知識點:樹的類型定義、二叉樹的類型定義、二叉樹的存儲表示、二叉樹的遍歷以及其它操作的實現(xiàn)、線索二叉樹、樹和森林的存儲表示、樹和森林的遍歷以及其它操作的實現(xiàn)、最優(yōu)樹和赫夫曼編碼。

7、圖(8學時)。

學習目標:

(1)領會圖的類型定義;

(2)熟悉圖的各種存儲結(jié)構(gòu)及其構(gòu)造算法,了解各種存儲結(jié)構(gòu)的特點及其選用原則;

(3)熟練掌握圖的兩種遍歷算法;(4)理解各種圖的應用問題的算法。

重點和難點:圖的應用極為廣泛,而且圖的各種應用問題的算法都比較經(jīng)典,因此本章重點在于理解各種圖的算法及其應用場合。

知識點:圖的類型定義、圖的存儲表示、圖的深度優(yōu)先搜索遍歷和圖的廣度優(yōu)先搜索遍歷、無向網(wǎng)的最小生成樹、最短路徑、拓撲排序、關(guān)鍵路徑。

8、查找(6學時)。

學習目標:

(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學時)。

學習目標:

(3)理解排序方法“穩(wěn)定”或“不穩(wěn)定”的含義,弄清楚在什么情況下要求應用的排序方法必須是穩(wěn)定的。

重點和難點:希爾排序、快速排序、堆排序和歸并排序等高效方法是本章的學習重點和難點。

知識點:排序、直接插入排序、折半插入排序、表插入排序、希爾排序、起泡排序、快速排序、簡單選擇排序、堆排序、2-路歸并排序、基數(shù)排序、排序方法的綜合比較。

10、文件(4學時)。

學習目標:熟悉各類文件的特點,構(gòu)造方法以及如何實現(xiàn)檢索,插入和刪除等操作。

重點和難點:本章重點在于了解各種文件的結(jié)構(gòu)特點及其適用場合。知識點:順序文件、索引文件、b-樹、b+樹、索引順序文件、vsam文件、散列文件、多關(guān)鍵字文件。

四、實驗教學內(nèi)容的基本要求及學時分配。

1、線性表(1學時)實驗一順序表的應用實驗二鏈表的應用。

要求:理解線性表的定義及其運算;理解順序表和鏈表的定義,組織形式,結(jié)構(gòu)特征和類型說明;掌握在這兩種表上實現(xiàn)的插入,刪除和按值查找的算法;了解循環(huán)鏈表,雙(循環(huán))鏈表的結(jié)構(gòu)特點和在其上施加的插入,刪除等操作。

2、棧(0.5學時)實驗三棧的應用。

要求:理解棧的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結(jié)構(gòu)上對棧所施加的基本運算的實現(xiàn)。

3、隊列(0.5學時)實驗四隊列的應用。

要求:理解隊列的定義,特征及在其上所定義的基本運算;掌握在兩種存儲結(jié)構(gòu)上對隊列所施加的基本運算的實現(xiàn)。

4、串(0.5學時)實驗五串的應用。

要求:了解串的定義;理解和領會串的存儲方式;掌握常用的串運算。

5、數(shù)組和廣義表(0.5學時)實驗六稀疏矩陣的應用。

要求:理解多維數(shù)組的結(jié)構(gòu)特點和在內(nèi)存中的兩種順序存儲方式;理解并掌握矩陣和特殊矩陣元素在存儲區(qū)中地址的計算;領會稀疏矩陣的壓縮方式和簡單運算;了解廣義表的定義和基本運算。

6、樹與二叉樹(4學時)實驗七樹與二叉樹的應用。

要求:理解樹的定義,術(shù)語;領會并掌握樹的各種存儲結(jié)構(gòu);熟練掌握森林與二叉樹間的相互轉(zhuǎn)換;領會樹和森林的遍歷;了解樹的簡單應用。深刻理解二叉樹的定義,性質(zhì)及其存儲方法;熟練掌握二叉樹的二叉鏈表存儲方式,結(jié)點結(jié)構(gòu)和類型定義;理解并掌握二叉樹的三種遍歷算法;掌握二叉樹的線索化方法;靈活運用二叉樹的遍歷方法解決相關(guān)的應用問題。

7、圖(3學時)實驗八圖的應用。

要求:理解圖的基本概念及術(shù)語;掌握圖的兩種存儲結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法;熟練掌握圖的兩種遍歷(深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷)的算法思想,步驟,并能列出在兩種存儲結(jié)構(gòu)上按上述兩種遍歷算法得到的序列;理解最小生成樹的概念,能按prim算法構(gòu)造最小生成樹;領會并掌握拓撲排序,關(guān)鍵路徑,最短路徑的算法思想。

8、查找(3學時)實驗九順序查找實驗十折半查找實驗十一哈希表的應用實驗十二二叉排序樹的綜合練習要求:了解查找的基本思想及查找成功和不成功的概念;掌握在順序表,有序表,索引表,散列表等上的查找方法和算法,并能求出相應的平均查找長度;理解并掌握二叉排序樹,平衡二叉樹b-樹的各種算法。

9、排序(3學時)實驗十三插入排序?qū)嶒炇倪x擇排序?qū)嶒炇迮判蚓C合練習。

要求:領會排序的基本思想和基本概念;理解并掌握插入排序,冒泡排序,快速排序,直接選擇排序,堆排序,歸并排序和基數(shù)排序的基本思想,步驟,算法及時空效率分析;了解外排序的定義和基本方法。

五、大綱說明。

1、課堂講述的論題只是核心或有特色的知識內(nèi)容,還有相當數(shù)量的篇章內(nèi)容留給學生自學,所確定的自學部分內(nèi)容亦屬考查范圍。

2、“數(shù)據(jù)結(jié)構(gòu)”課注重上機訓練,所有作業(yè)都必須配有規(guī)范的文檔。上機訓練由平時的上機訓練和小學期的實訓課程設計兩部分組成。

3、課內(nèi)學時安排說明:前8周每周4學時全為理論課,從第9周開始理論和上機為1:1,也即2學時理論,2學時上機訓練。

4、本課強調(diào)能力的培養(yǎng),期末采用半開卷考試(允許同學攜帶一頁a4紙的總結(jié)資料)。本課成績由平時作業(yè)、上機成績(30%)和期末考試(70%)合成得到,有獨到見解的作業(yè)予以適當加分。

5、主要參考書:

[1]《數(shù)據(jù)結(jié)構(gòu)與算法教程》鄒永林周蓓唐曉陽楊劍勇編著機械工業(yè)出版社。

[2]《數(shù)據(jù)結(jié)構(gòu)(c語言版)》(含cd)嚴蔚敏吳為民編著清華大學出版社。

[3]《數(shù)據(jù)結(jié)構(gòu)習題集(c語言版)》嚴蔚敏編著清華大學出版社。

[4]《數(shù)據(jù)結(jié)構(gòu)習題解析與實訓》張世和編著清華大學出版社。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十四

本次課程設計所用到的知識完全是上學期的知識,通過這次課程設計,我認識到了我對數(shù)據(jù)結(jié)構(gòu)這門課的掌握程度。

首先我這個課程設計是關(guān)于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關(guān)于二叉樹的知識有溫習了一遍,還好并沒有忘掉。二叉樹這章節(jié)難度中上等,而且內(nèi)容廣泛,所以我只掌握了百分之六七十。

然后,在編程中我認識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關(guān)于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復雜。以前,沒動手編程的時候覺得這些知識很容易,現(xiàn)在編程了才發(fā)現(xiàn)自己錯了,大錯特錯了,我們這個專業(yè)最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業(yè)了。計算機這個專業(yè)就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業(yè)的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發(fā)現(xiàn)里面的`樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”??梢哉f只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當作我們不可或缺的好朋友。

“數(shù)據(jù)結(jié)構(gòu)與算法課程設計”是計算機科學與技術(shù)專業(yè)學生的集中實踐性環(huán)節(jié)之一,是學習“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習。其目的是要達到理論與實際應用相結(jié)合,提高學生組織數(shù)據(jù)及編寫程序的能力,使學生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設計技能。

當初拿到這次課程設計題目時,似乎無從下手,但是經(jīng)過分析可知,對于簡單文本編輯器來說功能有限,不外乎創(chuàng)作文本、顯示文本、統(tǒng)計文本中字母—數(shù)字—空格—特殊字符—文本總字數(shù)、查找、刪除及插入這幾項功能。于是,我進行分模塊進行編寫程序。雖然每個模塊程序并不大,但是每個模塊都要經(jīng)過一番思考才能搞清其算法思想,只要有了算法思想,再加上c程序語言基礎,基本完成功能,但是,每個模塊不可能一次完成而沒有一點錯誤,所以,我給自己定了一個初級目標:用c語言大體描述每個算法,然后經(jīng)調(diào)試后改掉其中明顯的錯誤,并且根據(jù)調(diào)試結(jié)果改正一些算法錯誤,當然,這一目標實現(xiàn)較難。最后,經(jīng)過反復思考,看一下程序是否很完善,如果能夠達到更完善當然最好。并非我們最初想到的算法就是最好的算法,所以,有事我們會而不得不在編寫途中終止換用其他算法,但是,我認為這不是浪費時間,而是一種認識過程,在編寫程序中遇到的問題會為我們以后編寫程序積累經(jīng)驗,避免再犯同樣的錯誤。但是,有的方法不適用于這個程序,或許會適用于另外一個程序。所以,探索的過程是成長的過程,是為成功做的鋪墊。經(jīng)過努力后獲得成功,會更有成就感。

在課程設計過程中通過獨立解決問題,首先分析設計題目中涉及到的數(shù)據(jù)類型,在我們學習的數(shù)據(jù)存儲結(jié)構(gòu)中不外乎線性存儲結(jié)構(gòu)及非線性存儲結(jié)構(gòu),非線性存儲結(jié)構(gòu)中有樹型,集合型,圖型等存儲結(jié)構(gòu),根據(jù)數(shù)據(jù)類型設計數(shù)據(jù)結(jié)點類型。然后根據(jù)設計題目的主要任務,設計出程序大體輪廓(包括子函數(shù)和主函數(shù)),然后對每個子函數(shù)進行大體設計,過程中錯誤在所難免,所以要經(jīng)過仔細探索,對每個函數(shù)進行改進。

程序基本完成后,功能雖然齊全,但是程序是否完善(例如,輸入數(shù)據(jù)時是否在其范圍之內(nèi),所以加入判斷語句是很有必要的)還需運行測試多次,如有發(fā)現(xiàn)應該對其進行改善,當然要在力所能及的前提下。

課程設計過程雖然短暫,但是使我深刻理解數(shù)據(jù)結(jié)構(gòu)和算法課程對編程的重要作用,還有“數(shù)據(jù)結(jié)構(gòu)與算法”還提供了一些常用的基本算法思想及算法的編寫程序。通過獨立完成設計題目,使我系統(tǒng)了解編程的基本步驟,提高分析和解決實際問題的能力。通過實踐積累經(jīng)驗,才能有所創(chuàng)新。正所謂,良好的基礎決定上層建筑。只有基本功做好了,才有可能做出更好的成果。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十五

計算機技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標志,并逐步滲透到人類生活的各個領域。隨著計算機硬件的發(fā)展,對計算機軟件的發(fā)展也提出了越來越高的要求。由于軟件的核心是算法,而算法實際上是對加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對提高編程能力和設計高性能的算法是至關(guān)重要的。

非數(shù)值計算問題的數(shù)學模型不再是傳統(tǒng)的數(shù)學方程問題,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,簡單地說,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設計問題的學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。

一、教學目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);

教學要求在每章教學內(nèi)容給出,大體上為三個層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學會所學知識,熟練掌握就是運用所學知識解決實際問題。

教學目的為:了解算法對于程序設計的重要性;學習掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應用算法的設計。了解算法分析方法。

二、教學重點與難點--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法。

1、鏈表插入、刪除運算的算法。算法時間復雜度。

2、后綴表達式的算法,數(shù)制的換算。

利用本章的基本知識設計相關(guān)的應用問題。

3、循環(huán)隊列的特點及判斷溢出的條件。

利用隊列的特點設計相關(guān)的應用問題。

4、串的模式匹配運算算法。

5、二叉樹遍歷算法的設計。

利用二叉樹遍歷算法,解決簡單應用問題哈夫曼樹的算法。

6、圖的遍歷。

最小生成樹。

最短路徑。

7、二叉排序樹查找。

平衡樹二叉樹。

8、堆排序。

快速排序歸并排序。

四、教學內(nèi)容、目標與學時分配。

教學內(nèi)容教學目標課時分配。

1、緒論。

邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)。

算法和算法分析。

2、線性表。

線性表的定義與運算。

線性表的順序存儲。

線性表的鏈式存儲。

3、棧。

棧的定義與運算。

棧存儲和實現(xiàn)。

棧的應用舉例。

4、隊列。

隊列的定義與基本運算。

隊列的存儲與實現(xiàn)。

隊列的應用舉例。

5、串。

串的定義與基本運算。

串的表示與實現(xiàn)。

串的基本運算。

6、樹和二叉樹。

樹的定義和術(shù)語。

二叉樹樹的基本概念和術(shù)語遍歷二叉數(shù)和線索二叉樹。

二叉樹的轉(zhuǎn)換。

二叉樹的應用。

哈夫曼樹及其應用。

7、圖。

圖的定義和術(shù)語。

圖的存儲結(jié)構(gòu)。

圖的遍歷算法。

圖的連通性。

8、查找。

查找的基本概念與靜態(tài)查找動態(tài)查找。

哈希表。

了解。

了解。

掌握。

熟練掌握順序表存儲地址的計算。

掌握單鏈表的結(jié)構(gòu)特點和基本運算。

掌握雙鏈表的結(jié)構(gòu)特點和基本運算。

掌握棧的定義與運算。

掌握棧的存儲與實現(xiàn)。

熟練掌握棧的各種實際應用。

掌握隊列的定義與基本運算。

熟練掌握隊列的存儲與實現(xiàn)。

掌握循環(huán)隊列的特征和基本運算。

了解串的邏輯結(jié)構(gòu)。

掌握串的存儲結(jié)構(gòu)。

熟練掌握串的基本運算。

了解。

了解二叉樹。

熟練掌握二叉樹定義和存儲結(jié)構(gòu)。

了解二叉樹的遍歷算法。

掌握。

掌握哈夫曼的建立及編碼。

了解。

了解。

熟練掌握。

熟練掌握。

了解。

熟練掌握。

了解哈希表與哈希方法。

4學時。

1學時。

1學時。

2學時。

8學時。

2學時。

2學時。

4學時。

8學時。

2學時。

2學時。

4學時。

6學時。

2學時。

2學時。

2學時。

6學時。

2學時。

2學時。

2學時。

12學時。

2學時。

2學時。

2學時。

2學時。

2學時。

2學時。

8學時。

2學時。

2學時。

2學時。

2學時。

8學時。

4學時。

2學時。

2學時。

9、排序。

12學時插入排序。

熟練掌握基本思想。

3學時快速排序。

了解各種內(nèi)部排序方法和特點。

3學時選擇排序。

掌握。

2學時各種排序方法比較。

掌握。

2學時。

實驗內(nèi)容實驗目標課時分配算法編程實驗:

1、用指針方式編寫程序復習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、考試范圍與分數(shù)比例。

1)緒論。

12%2)線性表。

17%3)棧。

7%4)隊列。

6%5)串。

4%6)樹和二叉樹。

14%7)圖。

15%8)查找。

4%9)排序。

21%。

2、考試題型與分數(shù)比例。

1)名詞解釋。

18%2)判斷對錯。

16%3)填空。

16%4)單項選擇。

18%5)應用。

32%。

六、教材與參考資料。

1、教材:實用數(shù)據(jù)結(jié)構(gòu)基礎(譚浩強)中國鐵道出版社。

2、參考資料:數(shù)據(jù)結(jié)構(gòu)(嚴蔚敏)清華大學出版社。

(撰寫人:

審核人:2學時2學時2學時2學時2學時2學時2學時2學時2學時)。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十六

計算機技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標志,并逐步滲透到人類生活的各個領域。隨著計算機硬件的發(fā)展,對計算機軟件的發(fā)展也提出了越來越高的要求。由于軟件的核心是算法,而算法實際上是對加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對提高編程能力和設計高性能的算法是至關(guān)重要的。

非數(shù)值計算問題的數(shù)學模型不再是傳統(tǒng)的數(shù)學方程問題,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,簡單地說,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設計問題的學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。

一、教學目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);

教學要求在每章教學內(nèi)容給出,大體上為三個層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學會所學知識,熟練掌握就是運用所學知識解決實際問題。

教學目的為:了解算法對于程序設計的重要性;學習掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應用算法的設計。了解算法分析方法。

二、教學重點與難點--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法。

1、鏈表插入、刪除運算的算法。算法時間復雜度。

2、后綴表達式的算法,數(shù)制的換算。

利用本章的基本知識設計相關(guān)的應用問題。

3、循環(huán)隊列的特點及判斷溢出的條件。

利用隊列的特點設計相關(guān)的應用問題。

4、串的模式匹配運算算法。

5、二叉樹遍歷算法的設計。

利用二叉樹遍歷算法,解決簡單應用問題哈夫曼樹的算法。

6、圖的遍歷。

最小生成樹。

最短路徑。

7、二叉排序樹查找。

平衡樹二叉樹。

8、堆排序。

快速排序歸并排序。

四、教學內(nèi)容、目標與學時分配。

教學內(nèi)容教學目標課時分配。

1、緒論。

邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)。

算法和算法分析。

2、線性表。

線性表的定義與運算。

線性表的順序存儲。

線性表的鏈式存儲。

3、棧。

棧的定義與運算。

棧存儲和實現(xiàn)。

棧的應用舉例。

4、隊列。

隊列的定義與基本運算。

隊列的存儲與實現(xiàn)。

隊列的應用舉例。

5、串。

串的定義與基本運算。

串的表示與實現(xiàn)。

串的基本運算。

6、樹和二叉樹。

樹的定義和術(shù)語。

二叉樹樹的基本概念和術(shù)語遍歷二叉數(shù)和線索二叉樹。

二叉樹的轉(zhuǎn)換。

二叉樹的應用。

哈夫曼樹及其應用。

7、圖。

圖的定義和術(shù)語。

圖的存儲結(jié)構(gòu)。

圖的遍歷算法。

圖的連通性。

8、查找。

查找的基本概念與靜態(tài)查找動態(tài)查找。

哈希表。

了解。

了解。

掌握。

熟練掌握順序表存儲地址的計算。

掌握單鏈表的結(jié)構(gòu)特點和基本運算。

掌握雙鏈表的結(jié)構(gòu)特點和基本運算。

掌握棧的定義與運算。

掌握棧的存儲與實現(xiàn)。

熟練掌握棧的各種實際應用。

掌握隊列的定義與基本運算。

熟練掌握隊列的存儲與實現(xiàn)。

掌握循環(huán)隊列的特征和基本運算。

了解串的邏輯結(jié)構(gòu)。

掌握串的存儲結(jié)構(gòu)。

熟練掌握串的基本運算。

了解。

了解二叉樹。

熟練掌握二叉樹定義和存儲結(jié)構(gòu)。

了解二叉樹的遍歷算法。

掌握。

掌握哈夫曼的建立及編碼。

了解。

了解。

熟練掌握。

熟練掌握。

了解。

熟練掌握。

了解哈希表與哈希方法。

4學時。

1學時。

1學時。

2學時。

8學時。

2學時。

2學時。

4學時。

8學時。

2學時。

2學時。

4學時。

6學時。

2學時。

2學時。

2學時。

6學時。

2學時。

2學時。

2學時。

12學時。

2學時。

2學時。

2學時。

2學時。

2學時。

2學時。

8學時。

2學時。

2學時。

2學時。

2學時。

8學時。

4學時。

2學時。

2學時。

9、排序。

12學時插入排序。

熟練掌握基本思想。

3學時快速排序。

了解各種內(nèi)部排序方法和特點。

3學時選擇排序。

掌握。

2學時各種排序方法比較。

掌握。

2學時。

實驗內(nèi)容實驗目標課時分配算法編程實驗:

1、用指針方式編寫程序復習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、考試范圍與分數(shù)比例。

1)緒論。

12%2)線性表。

17%3)棧。

7%4)隊列。

6%5)串。

4%6)樹和二叉樹。

14%7)圖。

15%8)查找。

4%9)排序。

21%。

2、考試題型與分數(shù)比例。

1)名詞解釋。

18%2)判斷對錯。

16%3)填空。

16%4)單項選擇。

18%5)應用。

32%。

六、教材與參考資料。

1、教材:實用數(shù)據(jù)結(jié)構(gòu)基礎(譚浩強)中國鐵道出版社。

(撰寫人:

審核人:2學時2學時2學時2學時2學時2學時2學時2學時2學時)。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十七

通過兩周的課程設計,完成了預定的目標,其中有很多的隨想。老師的題目發(fā)下來的很早,大概提前了3周,當時就著手搜索有關(guān)線索二叉樹的思想,思路,借了一本《數(shù)據(jù)結(jié)構(gòu)-c語言描述》,在大體上就有了一個輪廓,先是輸入二叉樹,在對二叉樹進行線索化,依次往下,但在具體實現(xiàn)時,遇到了很多問題:首先是思想的確定,其非常重要,以前有了這個想法,現(xiàn)在愈加清晰起來,因此,花了大量的時間在插入刪除的具體操作設計上,大概三個晚上的時間,對其中什么不清晰明確之處均加以推敲,效果是顯著的,在上機上相應的節(jié)約了時間。

通過具體的實驗編碼,思路是對的,但是在小問題上摔了一次又一次,大部分時間都是花在這方面,這個節(jié)點沒傳過來啊之類的,以后應該搞一個小冊子,記錄一些錯誤的集合,以避免再犯,思想與c語言聯(lián)系起來,才是我們所需要的,即常說的理論與實踐的關(guān)系。

數(shù)據(jù)結(jié)構(gòu)是基礎的一門課,對于有過編程經(jīng)驗的人,結(jié)合自己的編程體會去悟它的思想;而且我覺得隨著編程經(jīng)歷的豐富對它的體會越深入,最初接觸是對一些思想可能只是生硬的記憶,隨著學習的深入逐漸領悟了很多??戳诉@次課程設計的`題目,雖然具體要求沒有看清,但是總結(jié)一下,可以看出,其需要我們能把一個具體案例或一件事情反映為程序來表達,數(shù)據(jù)結(jié)構(gòu)就是橋梁,通過自己的設計,使應用能力得以融匯,對與問題,具有了初步的分析,繼而解決之的能力,感覺對以后的學習會有很大的幫助,學習無非是用于實踐。

認識到自己的不足,希望能有進一步的發(fā)展。

數(shù)據(jù)結(jié)構(gòu)與算法心得篇十八

作為計算機科學與技術(shù)專業(yè)的學生,在學習數(shù)據(jù)結(jié)構(gòu)過程中,我深刻地認識到了數(shù)據(jù)結(jié)構(gòu)的重要性。數(shù)據(jù)結(jié)構(gòu)是計算機科學的基礎,也是程序員必備的核心知識。在通過課堂學習和實踐項目的同時,我逐漸積累了一些關(guān)于數(shù)據(jù)結(jié)構(gòu)的心得體會。

首先,學習數(shù)據(jù)結(jié)構(gòu)需要理論與實踐相結(jié)合。理論知識是數(shù)據(jù)結(jié)構(gòu)學習的基礎,只有理解了各種數(shù)據(jù)結(jié)構(gòu)的特點和應用場景,才能更好地使用它們。在學習過程中,我深刻體會到了課堂知識和實際應用的融合。通過書本中的案例分析和算法推導,我對數(shù)據(jù)結(jié)構(gòu)的特點有了初步的認識;而通過實踐項目的參與,我更深入地理解了數(shù)據(jù)結(jié)構(gòu)的實際應用。這種理論與實踐相結(jié)合的學習方式,使我在數(shù)據(jù)結(jié)構(gòu)方面取得了較為顯著的進步。

其次,堅持動手實踐是學習數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵。學習數(shù)據(jù)結(jié)構(gòu)不僅僅是掌握理論知識,更重要的是能夠靈活運用所學的知識解決實際問題。在我的數(shù)據(jù)結(jié)構(gòu)學習過程中,我通過編寫各種算法程序來鞏固和應用所學的知識。通過實踐項目,我學會了如何根據(jù)實際情況選擇合適的數(shù)據(jù)結(jié)構(gòu),并使用不同的算法來解決問題。在實踐的過程中,我也經(jīng)常遇到各種困難和問題,但正是通過一遍又一遍地調(diào)試和優(yōu)化,我得以更好地理解數(shù)據(jù)結(jié)構(gòu)的應用原理,提高了編程能力。

第三,良好的代碼規(guī)范和注釋是保證程序質(zhì)量的關(guān)鍵。在編寫數(shù)據(jù)結(jié)構(gòu)的代碼過程中,我漸漸意識到了良好的代碼規(guī)范和注釋對于程序質(zhì)量的重要性。在實踐項目中,有時需要多人合作開發(fā),良好的代碼規(guī)范可以使團隊成員之間更好地協(xié)同合作。另外,良好的注釋能夠讓自己和他人更加容易理解代碼的功能和實現(xiàn)思路,提高了代碼的可讀性和可維護性。因此,在實踐中,我始終將代碼規(guī)范和注釋作為重要的一環(huán),力求編寫出高質(zhì)量的代碼。

第四,不斷學習和更新是數(shù)據(jù)結(jié)構(gòu)學習的要求。數(shù)據(jù)結(jié)構(gòu)是一個廣闊而深邃的領域,新的數(shù)據(jù)結(jié)構(gòu)和算法層出不窮。因此,作為一個學習者,要不斷跟進和學習最新的知識,緊跟科技發(fā)展的步伐。除了自習和實踐外,我還積極參與各種學術(shù)討論和博客分享,不斷與其他同學交流學習,拓寬自己的思路和知識面。通過這樣的不斷學習和更新,我逐漸提高了自己的數(shù)據(jù)結(jié)構(gòu)水平,并且在實踐中得到了進一步的錘煉。

最后,數(shù)據(jù)結(jié)構(gòu)是計算機編程的基石,理解和掌握了數(shù)據(jù)結(jié)構(gòu),才能在編程的道路上越走越遠。數(shù)據(jù)結(jié)構(gòu)的學習并不是一蹴而就的,需要不斷的練習和實踐才能真正掌握。通過我的學習經(jīng)歷,我深刻體會到了數(shù)據(jù)結(jié)構(gòu)的重要性和應用價值。數(shù)據(jù)結(jié)構(gòu)是一門基礎而又實用的學科,它承載著計算機科學的眾多算法和思想,對于提高編程能力和解決實際問題有著重要的作用。

綜上所述,數(shù)據(jù)結(jié)構(gòu)學習需要理論與實踐相結(jié)合,需要堅持動手實踐,需要注重代碼規(guī)范和注釋,需要不斷學習和更新。我相信通過不懈努力和實踐,我將能夠在數(shù)據(jù)結(jié)構(gòu)這個領域取得更大的突破和進步。數(shù)據(jù)結(jié)構(gòu)的學習并不是終點,而是一個跳板,讓我們能夠更好地應對計算機科學中的各種挑戰(zhàn)和問題。

【本文地址:http://mlvmservice.com/zuowen/13598184.html】

全文閱讀已結(jié)束,如果需要下載本文請點擊

下載此文檔