第一篇:數(shù)據(jù)結(jié)構(gòu)與算法課程論文
數(shù)據(jù)結(jié)構(gòu)與算法課程小論文
10計(jì)本一班 王曉龍 1004011026 一. 內(nèi)容概要:
如何合理地組織數(shù)據(jù)、高效地處理數(shù)據(jù)是擴(kuò)大計(jì)算機(jī)領(lǐng)域、提高軟件效率的關(guān)鍵。在軟件開(kāi)發(fā)過(guò)程中要求“高效地”組織數(shù)據(jù)和設(shè)計(jì)“好的”算法,并使算法用程序來(lái)實(shí)現(xiàn),通過(guò)調(diào)試而成為軟件,必須具備數(shù)據(jù)結(jié)構(gòu)領(lǐng)域和算法設(shè)計(jì)領(lǐng)域的專(zhuān)門(mén)知識(shí)。
本課程主要學(xué)習(xí)在軟件開(kāi)發(fā)中涉及到的各種常用數(shù)據(jù)結(jié)構(gòu)及其常用的算法,在此基礎(chǔ)上,學(xué)習(xí)如何利用數(shù)據(jù)結(jié)構(gòu)和算法解決一些基本的應(yīng)用問(wèn)題。通過(guò)數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、基本算法和相關(guān)應(yīng)用問(wèn)題來(lái)介紹其基本知識(shí)和應(yīng)用知識(shí)。
二. 關(guān)鍵字:
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、基本算法;算法分析
三. 課程主要內(nèi)容和基本原理:
A.?dāng)?shù)據(jù)結(jié)構(gòu):
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來(lái)更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。
在許多類(lèi)型的程序的設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個(gè)基本的設(shè)計(jì)考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗(yàn)表明,系統(tǒng)實(shí)現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴(yán)重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時(shí)候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法就容易得到了。有些時(shí)候事情也會(huì)反過(guò)來(lái),我們根據(jù)特定算法來(lái)選擇數(shù)據(jù)結(jié)構(gòu)與之適應(yīng)。不論哪種情況,選擇合適的數(shù)據(jù)結(jié)構(gòu)都是非常重要的。
(1).分類(lèi):
數(shù)據(jù)元素相互之間的關(guān)系稱為結(jié)構(gòu)。有四類(lèi)基本結(jié)構(gòu):集合、線性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、圖狀結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))。樹(shù)形結(jié)構(gòu)和圖形結(jié)構(gòu)全稱為非線性結(jié)構(gòu)。集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一種類(lèi)型外,別無(wú)其它關(guān)系。線性結(jié)構(gòu)中元素之間存在一對(duì)一關(guān)系,樹(shù)形結(jié)構(gòu)中元素之間存在一對(duì)多關(guān)系,圖形結(jié)構(gòu)中元素之間存在多對(duì)多關(guān)系。在圖形結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)數(shù)可以任意多個(gè)。
數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(映像)稱為數(shù)據(jù)的物理(存儲(chǔ))結(jié)構(gòu)。它包括數(shù)據(jù)元素的表示和關(guān)系的表示。數(shù)據(jù)元素之間的關(guān)系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。順序存儲(chǔ)方法:它是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置相鄰的存儲(chǔ)單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來(lái)體現(xiàn),由此得到的存儲(chǔ)表示稱為順序存儲(chǔ)結(jié)構(gòu)。順序存儲(chǔ)結(jié)構(gòu)是一種最基本的存儲(chǔ)表示方法,通常借助于程序設(shè)計(jì)語(yǔ)言中的數(shù)組來(lái)實(shí)現(xiàn)。鏈接存儲(chǔ)方法:它不要求邏輯上相鄰的結(jié)點(diǎn)在物理位置上亦相鄰,結(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針字段表示的。由此得到的存儲(chǔ)表示稱為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)通常借助于程序設(shè)計(jì)語(yǔ)言中的指針類(lèi)型來(lái)實(shí)現(xiàn)。索引存儲(chǔ)方法:除建立存儲(chǔ)結(jié)點(diǎn)信息外,還建立附加的索引表來(lái)標(biāo)識(shí)結(jié)點(diǎn)的地址。散列存儲(chǔ)方法:就是根據(jù)結(jié)點(diǎn)的關(guān)鍵字直接計(jì)算出該結(jié)點(diǎn)的存儲(chǔ)地址。
數(shù)據(jù)結(jié)構(gòu)中,邏輯上(邏輯結(jié)構(gòu):數(shù)據(jù)元素之間的邏輯關(guān)系)可以把數(shù)據(jù)結(jié)構(gòu)分成線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)的順序存儲(chǔ)結(jié)構(gòu)是一種隨機(jī)存取的存儲(chǔ)結(jié)構(gòu),線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是一種順序存取的存儲(chǔ)結(jié)構(gòu)。線性表若采用鏈?zhǔn)酱鎯?chǔ)表示時(shí)所有結(jié)點(diǎn)之間的存儲(chǔ)單元地址可連續(xù)可不連續(xù)。邏輯結(jié)構(gòu)與數(shù)據(jù)元素本身的形式、內(nèi)容、相對(duì)位置、所含結(jié)點(diǎn)個(gè)數(shù)都無(wú)關(guān)。(2).四類(lèi)基本結(jié)構(gòu):
⑴集合結(jié)構(gòu)。該結(jié)構(gòu)的數(shù)據(jù)元素間的關(guān)系是“屬于同一個(gè)集合”。⑵線性結(jié)構(gòu)。該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對(duì)一的關(guān)系。⑶樹(shù)型結(jié)構(gòu)。該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對(duì)多的關(guān)系。
⑷圖形結(jié)構(gòu)。該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著多對(duì)多的關(guān)系,也稱網(wǎng)狀結(jié)構(gòu)。從上面所介紹的數(shù)據(jù)結(jié)構(gòu)的概念中可以知道,一個(gè)數(shù)據(jù)結(jié)構(gòu)有兩個(gè)要素。一個(gè)是數(shù)據(jù)元素的集合,另一個(gè)是關(guān)系的集合。在形式上,數(shù)據(jù)結(jié)構(gòu)通??梢圆捎靡粋€(gè)二元組來(lái)表示。
(3).常用的數(shù)據(jù)結(jié)構(gòu):
a.數(shù)組: 在程序設(shè)計(jì)中,為了處理方便,把具有相同類(lèi)型的若干變量按有序的形式組織起來(lái)。這些按序排列的同類(lèi)數(shù)據(jù)元素的集合稱為數(shù)組。在C語(yǔ)言中,數(shù)組屬于構(gòu)造數(shù)據(jù)類(lèi)型。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類(lèi)型或是構(gòu)造類(lèi)型。因此按數(shù)組元素的類(lèi)型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類(lèi)別。b.棧:
是只能在某一端插入和刪除的特殊線性表。它按照先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開(kāi)始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來(lái))。c.隊(duì)列:
一種特殊的線性表,它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。隊(duì)列中沒(méi)有元素時(shí),稱為空隊(duì)列。d.鏈表:
是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。e.樹(shù):
是包含n(n>0)個(gè)結(jié)點(diǎn)的有窮集合K,且在K中定義了一個(gè)關(guān)系N,N滿足以下條件:
(1)有且僅有一個(gè)結(jié)點(diǎn) k0,他對(duì)于關(guān)系N來(lái)說(shuō)沒(méi)有前驅(qū),稱K0為樹(shù)的根結(jié)點(diǎn)。簡(jiǎn)稱為根(root)。(2)除K0外,k中的每個(gè)結(jié)點(diǎn),對(duì)于關(guān)系N來(lái)說(shuō)有且僅有一個(gè)前驅(qū)。
(3)K中各結(jié)點(diǎn),對(duì)關(guān)系N來(lái)說(shuō)可以有m個(gè)后繼(m>=0)。f.圖:
圖是由結(jié)點(diǎn)的有窮集合V和邊的集合E組成。其中,為了與樹(shù)形結(jié)構(gòu)加以區(qū)別,在圖結(jié)構(gòu)中常常將結(jié)點(diǎn)稱為頂點(diǎn),邊是頂點(diǎn)的有序偶對(duì),若兩個(gè)頂點(diǎn)之間存在一條邊,就表示這兩個(gè)頂點(diǎn)具有相鄰關(guān)系。g.堆: 在計(jì)算機(jī)科學(xué)中,堆是一種特殊的樹(shù)形數(shù)據(jù)結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都有一個(gè)值。通常我們所說(shuō)的堆的數(shù)據(jù)結(jié)構(gòu),是指二叉堆。堆的特點(diǎn)是根結(jié)點(diǎn)的值最?。ɑ蜃畲螅腋Y(jié)點(diǎn)的兩個(gè)子樹(shù)也是一個(gè)堆。h.散列表:
若結(jié)構(gòu)中存在關(guān)鍵字和K相等的記錄,則必定在f(K)的存儲(chǔ)位置上。由此,不需比較便可直接取得所查記錄。稱這個(gè)對(duì)應(yīng)關(guān)系f為散列函數(shù)(Hash function),按這個(gè)思想建立的表為散列表。B.算法分析:
算法分析是對(duì)一個(gè)算法需要多少計(jì)算時(shí)間和存儲(chǔ)空間作定量的分析。算法是解題的步驟,可以把算法定義成解一確定類(lèi)問(wèn)題的任意一種特殊的方法。在計(jì)算機(jī)科學(xué)中,算法要用計(jì)算機(jī)算法語(yǔ)言描述,算法代表用計(jì)算機(jī)解一類(lèi)問(wèn)題的精確、有效的方法。算法+數(shù)據(jù)結(jié)構(gòu)=程序,求解一個(gè)給定的可計(jì)算或可解的問(wèn)題,不同的人可以編寫(xiě)出不同的程序,來(lái)解決同一個(gè)問(wèn)題,這里存在兩個(gè)問(wèn)題:一是與計(jì)算方法密切相關(guān)的算法問(wèn)題;二是程序設(shè)計(jì)的技術(shù)問(wèn)題。算法和程序之間存在密切的關(guān)系。分析算法可以預(yù)測(cè)這一算法適合在什么樣的環(huán)境中有效地運(yùn)行,對(duì)解決同一問(wèn)題的不同算法的有效性作出比較。
四.心得體會(huì):
在做完這次課程論文后,讓我再次加深了對(duì)數(shù)據(jù)結(jié)構(gòu)與算法的理解,對(duì)數(shù)據(jù)結(jié)構(gòu)的構(gòu)建也有更深層次的體會(huì)。算法的每一次改進(jìn)和提高,都凝聚著人類(lèi)的智慧和辛勤勞動(dòng),每一次創(chuàng)新都給人類(lèi)帶來(lái)了巨大的進(jìn)步。數(shù)據(jù)結(jié)構(gòu)與先進(jìn)的算法能夠合理地組織數(shù)據(jù)、高效地處理數(shù)據(jù),擴(kuò)大計(jì)算機(jī)的應(yīng)用領(lǐng)域,提高軟件的效率。這充分體現(xiàn)了其重要意義。
五. 參考文獻(xiàn):
數(shù)據(jù)結(jié)構(gòu)與算法王昆侖,李紅
第二篇:數(shù)據(jù)結(jié)構(gòu)與算法課程總結(jié)[模版]
數(shù)據(jù)結(jié)構(gòu)與算法課程學(xué)習(xí)總結(jié)報(bào)告
11計(jì)本一班 許雪松 1104013018
數(shù)據(jù)結(jié)構(gòu)與算法是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)科學(xué)的核心課程,而且也已經(jīng)成為其他理工專(zhuān)業(yè)的熱門(mén)選修課。總的來(lái)說(shuō)感觸還是比較深的,剛開(kāi)始上的時(shí)候還蠻簡(jiǎn)單的,越到后面感覺(jué)越難,算法也更復(fù)雜了,有時(shí)候甚至聽(tīng)不懂,老師上課時(shí)講的也蠻快的,所以只能靠課下下功夫了。下面是我對(duì)本學(xué)期學(xué)習(xí)這門(mén)課的總結(jié)。
一、數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)點(diǎn)
第一章的數(shù)據(jù)結(jié)構(gòu)和算法的引入,介紹了數(shù)據(jù)和數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、算法描述工具、算法和算法評(píng)價(jià)四個(gè)方面的知識(shí)。
第二章具體地介紹了順序表的概念、基本運(yùn)算及其應(yīng)用?;具\(yùn)算有:初始化表、求表長(zhǎng)、排序、元素的查找、插入及刪除等。元素查找方法有:簡(jiǎn)單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等。最后介紹了順序串的概念,重點(diǎn)在于串的模式匹配。
第三章主要介紹的是線性邏輯結(jié)構(gòu)的數(shù)據(jù)在鏈接存儲(chǔ)方法下數(shù)據(jù)結(jié)構(gòu)鏈表的相關(guān)知識(shí)。主要是單鏈表、循環(huán)鏈表的數(shù)據(jù)類(lèi)型結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其實(shí)現(xiàn)以及鏈表的相關(guān)應(yīng)用問(wèn)題,在此基礎(chǔ)上介紹了鏈串的相關(guān)知識(shí)。在應(yīng)用方面有多項(xiàng)式的相加問(wèn)題、歸并問(wèn)題、箱子排序問(wèn)題和鏈表在字符處理方面的應(yīng)用問(wèn)題等。本章未完全掌握的是循環(huán)鏈表的算法問(wèn)題和C的描述。
第四章介紹在兩種不同的存儲(chǔ)結(jié)構(gòu)下設(shè)計(jì)的堆棧,即順序棧和鏈棧的相關(guān)知識(shí),了解堆棧的相關(guān)應(yīng)用,掌握應(yīng)用堆棧來(lái)解決實(shí)際問(wèn)題的思想及方法。本章主要內(nèi)容是順序棧和鏈棧的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)定義和基本運(yùn)算算法及其性能分析。本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握。
第五章主要介紹順序存儲(chǔ)和鏈接存儲(chǔ)方法下的兩種隊(duì)列、順序(循環(huán))隊(duì)列和鏈隊(duì)列的數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其性能分析以及應(yīng)用。順序隊(duì)列(重點(diǎn)是循環(huán)隊(duì)列)和鏈隊(duì)列的概念、數(shù)據(jù)類(lèi)型描述、數(shù)據(jù)結(jié)構(gòu)和基本運(yùn)算算法及其性能分析等。本章同堆棧有點(diǎn)類(lèi)似,算法思想較為簡(jiǎn)單,所以能較好掌握;但難點(diǎn)重在循環(huán)隊(duì)列隊(duì)空、隊(duì)滿的判斷條件問(wèn)題。
第六章“特殊矩陣、廣義表及其應(yīng)用”將學(xué)習(xí)數(shù)組、稀疏矩陣和廣義表的基本概念,幾種特殊矩陣的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算,在此基礎(chǔ)上學(xué)習(xí)特殊矩陣的計(jì)算算法與廣義表應(yīng)用等相關(guān)問(wèn)題。本章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。
第七章二叉樹(shù)及其應(yīng)用。分為二叉樹(shù)的基本概念、二叉樹(shù)存儲(chǔ)結(jié)構(gòu)、二叉樹(shù)的遍歷算法、線索二叉樹(shù)、二叉樹(shù)的應(yīng)用(哈夫曼樹(shù)、二叉排序樹(shù)、堆和堆排序、基本算法)?;舅惴òǘ鏄?shù)的建立、遍歷、線索化等算法。在此基礎(chǔ)上,介紹二叉樹(shù)的一些應(yīng)用問(wèn)題,包括哈夫曼編碼問(wèn)題、(平衡)二叉排序樹(shù)問(wèn)題和堆排序問(wèn)題等。
第八章說(shuō)的是樹(shù)和森林,首先我們要知道樹(shù)與二叉樹(shù)是不同的概念。課本介紹了樹(shù)和森林的概念、遍歷和存儲(chǔ)結(jié)構(gòu),還有樹(shù)、森林和二叉樹(shù)的相互關(guān)系,樹(shù)或森林怎樣轉(zhuǎn)化成二叉樹(shù),二叉樹(shù)又如何轉(zhuǎn)換為樹(shù)和森林等算法。
第九章“散列結(jié)構(gòu)及其應(yīng)用”是邏輯結(jié)構(gòu)“集合型”的數(shù)據(jù)元素在散列存儲(chǔ)方法下的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用知識(shí)內(nèi)容。主要介紹散列函數(shù)的概念、散列結(jié)構(gòu)的概念、散列存儲(chǔ)結(jié)構(gòu)的概念---散列表、散列函數(shù)和散列表中解決沖突的處理方法---開(kāi)放定址法、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,所以掌握不太好。
第十章圖及其應(yīng)用。分為圖的概念、圖的存儲(chǔ)結(jié)構(gòu)及其基本算法、圖的遍歷及算法、有向圖的連通性和最小生成樹(shù)、圖的最小生成樹(shù)、非連通圖的生成森林算法、最短路徑、有向無(wú)環(huán)圖及其應(yīng)用。
二、對(duì)各知識(shí)點(diǎn)的掌握情況
我對(duì)各知識(shí)點(diǎn)的掌握情況總結(jié)如下:
對(duì)于第一章對(duì)數(shù)據(jù)結(jié)構(gòu)的概念理解頗深,大概是每次都要談?wù)摰桨?。?duì)算法的時(shí)間性能,空間性能基本了解。這些在后面的章節(jié)都會(huì)有運(yùn)用。第二章本章重點(diǎn)和難點(diǎn)在查找和排序問(wèn)題的算法思想上,6種排序方法的性能比較。本章未掌握的為希爾排序、快速排序、歸并排序的時(shí)間復(fù)雜度分析。第三章,對(duì)鏈表掌握還好,對(duì)其數(shù)據(jù)結(jié)構(gòu)進(jìn)行了分析,有循環(huán)鏈表,掌握的不是很好,對(duì)其中一些用法不熟練。第四章堆棧,本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握,但表達(dá)式計(jì)算問(wèn)題未掌握好的。第五章的循環(huán)隊(duì)列隊(duì)空、隊(duì)滿的判斷條件問(wèn)題掌握的不是很好。第六章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。第七章對(duì)二叉樹(shù)掌握較好,其概念,存儲(chǔ),遍歷有很好的掌握。就是對(duì)二叉排序樹(shù)有點(diǎn)生疏,它的生成算法不是很會(huì)。第八章樹(shù)樹(shù)與二叉樹(shù)之間的轉(zhuǎn)換,森林與二叉樹(shù)的轉(zhuǎn)換算法思想基本掌握。第九章散列的一些知識(shí),沒(méi)有深入學(xué)習(xí),大概了解了散列存儲(chǔ)結(jié)構(gòu)散列表,散列函數(shù),沖突的處理方法。第十章了解了圖的逆鄰接表的存儲(chǔ)結(jié)構(gòu),關(guān)鍵路徑求解算法未能掌握好,不能靈活運(yùn)用圖的不同數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復(fù)雜的應(yīng)用問(wèn)題。
三、學(xué)習(xí)體會(huì)
剛剛接觸這門(mén)課時(shí),看到課本中全是算法,當(dāng)時(shí)就暈了,因?yàn)槲业腃語(yǔ)言學(xué)的不好,我擔(dān)心會(huì)影響這門(mén)課的學(xué)習(xí),后來(lái)上課時(shí)老師說(shuō)學(xué)習(xí)這門(mén)課的基礎(chǔ)是C語(yǔ)言,所以我當(dāng)時(shí)就決定一定要好好補(bǔ)補(bǔ),爭(zhēng)取不被拖后腿,在學(xué)習(xí)這門(mén)課的期間,也遇到了不少問(wèn)。但是通過(guò)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法,讓我對(duì)程序有了新的認(rèn)識(shí),也有了更深的理解。同時(shí),也讓我認(rèn)識(shí)到,不管學(xué)習(xí)什么,概念是基礎(chǔ),所有的知識(shí)框架都是建立在基礎(chǔ)概念之上的,所以,第一遍看課本要將概念熟記于心,然后構(gòu)建知識(shí)框架。并且,對(duì)算法的學(xué)習(xí)是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵。在第二遍看課本的過(guò)程中,要注重對(duì)算法的掌握。對(duì)于一個(gè)算法,讀一遍可能能讀懂,但不可能完全領(lǐng)會(huì)其中的思想。掌握一個(gè)算法,并不是說(shuō)將算法背過(guò),而是掌握算法的思想。我們需要的是耐心。每看一遍就會(huì)有這一遍的收獲。讀懂算法之后,自己再默寫(xiě)算法,寫(xiě)到不會(huì)的地方,看看課本想想自己為什么沒(méi)有想到。對(duì)算法的應(yīng)用上,學(xué)習(xí)算法的目的是利用算法解決實(shí)際問(wèn)題。會(huì)寫(xiě)課本上已有的算法之后,可以借其思想進(jìn)行擴(kuò)展,逐步提高編程能力。
四、對(duì)課程教學(xué)的建議
1、課程課時(shí)較緊,課堂上的練習(xí)時(shí)間較少,講解的東西越多,頭腦有時(shí)就很混亂。
2、感覺(jué)上課時(shí)的氣氛不是很好,雖然大部分人都在聽(tīng),可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,可以是大家都非常關(guān)心的一些內(nèi)容,這樣既讓大家能在思考之余有一個(gè)放松,也能夠提高學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效率。
3、學(xué)習(xí)的積極性很重要,有時(shí)候我們花了很長(zhǎng)時(shí)間去寫(xiě)實(shí)驗(yàn)報(bào)告,也很認(rèn)真的去理解去掌握,可是最后實(shí)驗(yàn)報(bào)告可能就只得了一個(gè)C,抄的人反而得A,這樣的話很容易打擊學(xué)生的積極性,在后面的實(shí)驗(yàn)報(bào)告中沒(méi)動(dòng)力再去認(rèn)真寫(xiě)。所以希望老師能在這方面有所調(diào)整。
4、雖然講課的時(shí)間很緊,但是還是希望老師能在講述知識(shí)點(diǎn)的時(shí)候能運(yùn)用實(shí)際的調(diào)試程序來(lái)給我們講解,這樣的話能讓我們對(duì)這些內(nèi)容有更深刻的印象和理解。
第三篇:數(shù)據(jù)結(jié)構(gòu)與算法課程教學(xué)大綱
教學(xué)大綱
數(shù)據(jù)結(jié)構(gòu)與算法(Data Structures)
計(jì)算機(jī)技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標(biāo)志,并逐步滲透到人類(lèi)生活的各個(gè)領(lǐng)域。隨著計(jì)算機(jī)硬件的發(fā)展,對(duì)計(jì)算機(jī)軟件的發(fā)展也提出了越來(lái)越高的要求。由于軟件的核心是算法,而算法實(shí)際上是對(duì)加工數(shù)據(jù)過(guò)程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對(duì)提高編程能力和設(shè)計(jì)高性能的算法是至關(guān)重要的。
非數(shù)值計(jì)算問(wèn)題的數(shù)學(xué)模型不再是傳統(tǒng)的數(shù)學(xué)方程問(wèn)題,而是諸如表、樹(shù)、圖之類(lèi)的數(shù)據(jù)結(jié)構(gòu)。因此,簡(jiǎn)單地說(shuō),數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題的學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和算法。
一、教學(xué)目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);
教學(xué)要求在每章教學(xué)內(nèi)容給出,大體上為三個(gè)層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學(xué)會(huì)所學(xué)知識(shí),熟練掌握就是運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題。
教學(xué)目的為:了解算法對(duì)于程序設(shè)計(jì)的重要性 ; 學(xué)習(xí)掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實(shí)現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用算法的設(shè)計(jì)。了解算法分析方法。
二、教學(xué)重點(diǎn)與難點(diǎn)--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語(yǔ),算法描述和分析方法。
1、鏈表插入、刪除運(yùn)算的算法。算法時(shí)間復(fù)雜度
2、后綴表達(dá)式的算法,數(shù)制的換算
利用本章的基本知識(shí)設(shè)計(jì)相關(guān)的應(yīng)用問(wèn)題
3、循環(huán)隊(duì)列的特點(diǎn)及判斷溢出的條件
利用隊(duì)列的特點(diǎn)設(shè)計(jì)相關(guān)的應(yīng)用問(wèn)題
4、串的模式匹配運(yùn)算算法
5、二叉樹(shù)遍歷算法的設(shè)計(jì)
利用二叉樹(shù)遍歷算法,解決簡(jiǎn)單應(yīng)用問(wèn)題 哈夫曼樹(shù)的算法
6、圖的遍歷
最小生成樹(shù)
最短路徑
7、二叉排序樹(shù)查找
平衡樹(shù)二叉樹(shù)
8、堆排序
快速排序 歸并排序
三、教學(xué)方法與手段-充分利用多媒體教學(xué)工具,配合黑板上的教學(xué)內(nèi)容較難部分的算法實(shí)現(xiàn)過(guò)程演義
四、教學(xué)內(nèi)容、目標(biāo)與學(xué)時(shí)分配
教學(xué)內(nèi)容 教學(xué)目標(biāo) 課時(shí)分配
1、緒論
數(shù)據(jù)結(jié)構(gòu)的內(nèi)容
邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)
算法和算法分析
2、線性表
線性表的定義與運(yùn)算
線性表的順序存儲(chǔ)
線性表的鏈?zhǔn)酱鎯?chǔ)
3、棧
棧的定義與運(yùn)算
棧存儲(chǔ)和實(shí)現(xiàn)
棧的應(yīng)用舉例
4、隊(duì)列
隊(duì)列的定義與基本運(yùn)算
隊(duì)列的存儲(chǔ)與實(shí)現(xiàn)
隊(duì)列的應(yīng)用舉例
5、串
串的定義與基本運(yùn)算
串的表示與實(shí)現(xiàn)
串的基本運(yùn)算
6、樹(shù)和二叉樹(shù)
樹(shù)的定義和術(shù)語(yǔ)
二叉樹(shù)樹(shù)的基本概念和術(shù)語(yǔ) 遍歷二叉數(shù)和線索二叉樹(shù)
二叉樹(shù)的轉(zhuǎn)換
二叉樹(shù)的應(yīng)用
哈夫曼樹(shù)及其應(yīng)用
7、圖
圖的定義和術(shù)語(yǔ)
圖的存儲(chǔ)結(jié)構(gòu)
圖的遍歷算法
圖的連通性
8、查找
查找的基本概念與靜態(tài)查找 動(dòng)態(tài)查找
哈希表
了解
了解
掌握
熟練掌握順序表存儲(chǔ)地址的計(jì)算
掌握單鏈表的結(jié)構(gòu)特點(diǎn)和基本運(yùn)算
掌握雙鏈表的結(jié)構(gòu)特點(diǎn)和基本運(yùn)算
掌握棧的定義與運(yùn)算
掌握棧的存儲(chǔ)與實(shí)現(xiàn)
熟練掌握棧的各種實(shí)際應(yīng)用
掌握隊(duì)列的定義與基本運(yùn)算
熟練掌握隊(duì)列的存儲(chǔ)與實(shí)現(xiàn)
掌握循環(huán)隊(duì)列的特征和基本運(yùn)算
了解串的邏輯結(jié)構(gòu)
掌握串的存儲(chǔ)結(jié)構(gòu)
熟練掌握串的基本運(yùn)算
了解
了解二叉樹(shù)
熟練掌握二叉樹(shù)定義和存儲(chǔ)結(jié)構(gòu)
了解二叉樹(shù)的遍歷算法
掌握
掌握哈夫曼的建立及編碼
了解
了解
熟練掌握
熟練掌握
了解
熟練掌握
了解哈希表與哈希方法
4學(xué)時(shí)
1學(xué)時(shí)
1學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
4學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
4學(xué)時(shí)
6學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
6學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
12學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
4學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
9、排序
12學(xué)時(shí) 插入排序
熟練掌握基本思想
3學(xué)時(shí) 快速排序
了解各種內(nèi)部排序方法和特點(diǎn)
3學(xué)時(shí) 選擇排序
掌握
2學(xué)時(shí) 各種排序方法比較
掌握
2學(xué)時(shí)
實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)?zāi)繕?biāo) 課時(shí)分配 算法編程實(shí)驗(yàn):
1、用指針?lè)绞骄帉?xiě)程序 復(fù)習(xí)C(C++)語(yǔ)言指針、結(jié)構(gòu)體等的用法
2、對(duì)單鏈表進(jìn)行遍歷
鏈表的描述與操作實(shí)現(xiàn)
3、棧及其操作
描述方法及操作
4、編寫(xiě)串子系統(tǒng)1 串的特點(diǎn)及順序定長(zhǎng)存儲(chǔ)、操作、查找
5、編寫(xiě)串子系統(tǒng) 2 串的特點(diǎn)及順序定長(zhǎng)存儲(chǔ)、操作、查找
6、編寫(xiě)樹(shù)子系統(tǒng)1 二叉樹(shù)的特點(diǎn)及存儲(chǔ)方式、創(chuàng)建、顯示、遍歷等
7、編寫(xiě)樹(shù)子系統(tǒng)2 二叉樹(shù)的特點(diǎn)及存儲(chǔ)方式、創(chuàng)建、顯示、遍歷等
8、圖子系統(tǒng)
圖的鄰接矩陣的存儲(chǔ)、遍歷、廣度/深度優(yōu)先搜索
9、查找子系統(tǒng)
理解查找基本算法、平均查找長(zhǎng)度、靜態(tài)、動(dòng)態(tài)查找等
五、考試范圍與題型
1、考試范圍與分?jǐn)?shù)比例
1)緒論
12% 2)線性表
17% 3)棧
7% 4)隊(duì)列
6% 5)串
4% 6)樹(shù)和二叉樹(shù)
14% 7)圖
15% 8)查找
4% 9)排序
21%
2、考試題型與分?jǐn)?shù)比例
1)名詞解釋
18% 2)判斷對(duì)錯(cuò)
16% 3)填空
16% 4)單項(xiàng)選擇
18% 5)應(yīng)用
32%
六、教材與參考資料
1、教材: 實(shí)用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(譚浩強(qiáng))中國(guó)鐵道出版社
2、參考資料: 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)實(shí)用教程(徐孝凱)清華大學(xué)出版社
(撰寫(xiě)人:
,審核人: 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí))
第四篇:“數(shù)據(jù)結(jié)構(gòu)與算法”課程學(xué)習(xí)總結(jié)報(bào)告
“數(shù)據(jù)結(jié)構(gòu)與算法”課程學(xué)習(xí)總結(jié)報(bào)告
1004012033 陳孝婕 10計(jì)本3 “數(shù)據(jù)結(jié)構(gòu)與算法”這門(mén)課程對(duì)于計(jì)算機(jī)科學(xué)與技術(shù)系的學(xué)生來(lái)說(shuō)是非常重要的課程。這門(mén)課程主要包括十個(gè)章節(jié)。
一.每章主要知識(shí)點(diǎn)總結(jié)和個(gè)人掌握情況
第一章主要要求學(xué)生掌握數(shù)據(jù)、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、算法及算法分析等基本概念和基礎(chǔ)知識(shí)。另外,第一章結(jié)合課程學(xué)習(xí)要求,復(fù)習(xí)和掌握算法描述工具--C語(yǔ)言中的指針類(lèi)型與指針變量、結(jié)構(gòu)類(lèi)型與結(jié)構(gòu)變量、函數(shù)與參數(shù)、遞歸定義和遞歸函數(shù)、動(dòng)態(tài)存儲(chǔ)分配、文件操作、程序測(cè)試和測(cè)試集、測(cè)試數(shù)據(jù)的設(shè)計(jì)和程序調(diào)試等問(wèn)題。
從這一章中我不僅學(xué)到了數(shù)據(jù)結(jié)構(gòu)的基本概念和基礎(chǔ)知識(shí),了解到什么是數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁匆獙W(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程。而且復(fù)習(xí)了大一下學(xué)期所學(xué)的C語(yǔ)言程序課程設(shè)計(jì)中的算基本法語(yǔ)句。有利于數(shù)據(jù)結(jié)構(gòu)與算法后面課程的學(xué)習(xí)。
第二章主要學(xué)習(xí)順序表(包括順序串)數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、基本算法及相關(guān)應(yīng)用。知識(shí)點(diǎn)包括順序表的概念、數(shù)據(jù)結(jié)構(gòu)定義、數(shù)據(jù)類(lèi)型描述、基本算法的實(shí)現(xiàn)及其性能的分析等知識(shí);還有“查找”和“排序”的概念,“查找”包括3種查找方式:簡(jiǎn)單順序查找、二分查找、分塊查找;“排序”包括直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序和歸并排序(重點(diǎn)為二路歸并排序)6種排序方式;掌握應(yīng)用順序表來(lái)進(jìn)行查找和排序的各類(lèi)算法以及不同的查找和排序算法間的性能差異。在此基礎(chǔ)上,理解順序串的相關(guān)應(yīng)用。
從這一章中我學(xué)習(xí)到各種不同的查找方法和排序方式,其中二分查找作為重點(diǎn)查找方法我進(jìn)行了重點(diǎn)學(xué)習(xí),熟悉并熟練地運(yùn)用二分查找并且了解到各種排序方法適合于不同的順序表。對(duì)于順序串的學(xué)習(xí),我主要掌握了字符串的基本運(yùn)算,包括:求串長(zhǎng)strlen(S)、連接stract(ST1,ST2)、求子串substr(S,i,j)、比較串的大小strcmp(S,T)、插入insert(S1,i,S2)、刪除delete(S,i,j)、子串定位index(S1,S2)、置換(replace(S1,i,j,S2)、replace(S,T,V)兩種)。
第三章主要學(xué)習(xí)鏈表(單聊表、循環(huán)鏈表)的概念、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類(lèi)型描述、基本算法以及鏈表相關(guān)應(yīng)用。需要掌握各種鏈表的概念、數(shù)據(jù)結(jié)構(gòu)定義、基本算法實(shí)現(xiàn)以及算法的性能分析等知識(shí),掌握鏈表的相關(guān)應(yīng)用方法,在此基礎(chǔ)上掌握鏈串的相關(guān)知識(shí)。
通過(guò)這一章我學(xué)習(xí)了另一種數(shù)據(jù)結(jié)構(gòu)——鏈表,在邏輯結(jié)構(gòu)上,鏈表與順序表一樣,也是線性邏輯結(jié)構(gòu);單鏈表借助“地址”的概念,使用了鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),產(chǎn)生了一種新的數(shù)據(jù)結(jié)構(gòu)——鏈表,鏈表的基本操作是地址運(yùn)算,在此基礎(chǔ)上構(gòu)成的鏈表基本算法的特點(diǎn)也就不同,從鏈表算法的功能看,鏈表的基本運(yùn)算與順序表基本相同,但實(shí)現(xiàn)方法和過(guò)程與順序表是不同的,鏈表可分為靜態(tài)鏈表和動(dòng)態(tài)鏈表兩種。這一章我學(xué)習(xí)到的實(shí)際應(yīng)用是鏈表的創(chuàng)建、插入和刪除等基本操作。循環(huán)鏈表的建立和查詢方法。
第四章主要知識(shí)點(diǎn)是在兩種不同的存儲(chǔ)結(jié)構(gòu)下設(shè)計(jì)的堆棧,即順序棧和鏈棧。主要內(nèi)容是順序棧和鏈棧的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)定義和基本運(yùn)算算法及其性能分析。通過(guò)對(duì)本章的學(xué)習(xí),要求掌握順序棧及鏈棧的數(shù)據(jù)類(lèi)型描述、數(shù)據(jù)結(jié)構(gòu)、基本算法及其性能分析等知識(shí)。在此基礎(chǔ)上,了解堆棧的相關(guān)應(yīng)用,掌握應(yīng)用堆棧解決實(shí)際問(wèn)題的思想及方法。
通過(guò)對(duì)這一章的學(xué)習(xí),我了解了堆棧的概念,堆棧的原理、創(chuàng)建方法以及使用方式?!昂筮M(jìn)先出”是其基本原則。利用堆??梢暂p松方便的解決對(duì)稱問(wèn)題以及括號(hào)匹配等問(wèn)題。堆棧與順序表、鏈表不同的是,堆棧只能對(duì)一端的數(shù)據(jù)元素進(jìn)行操作,即只在棧頂進(jìn)行元素的插入和刪除。掌握順序棧和鏈表的存儲(chǔ)結(jié)構(gòu)是學(xué)習(xí)堆棧的要素之一。堆棧是一類(lèi)常用的數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用于各種程序設(shè)計(jì)中。
第五章的重點(diǎn)知識(shí)是在順序存儲(chǔ)和鏈接存儲(chǔ)下的兩種隊(duì)列——順序(循環(huán))隊(duì)列和鏈隊(duì)
列的數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其性能分析以及應(yīng)用。通過(guò)本章的學(xué)習(xí),要求掌握順序隊(duì)列(重點(diǎn)是循環(huán)隊(duì)列)及鏈隊(duì)列的概念、數(shù)據(jù)類(lèi)型描述、數(shù)據(jù)結(jié)構(gòu)、基本算法及其性能分析等知識(shí)。在此基礎(chǔ)上,了解隊(duì)列的相關(guān)應(yīng)用,掌握應(yīng)用隊(duì)列來(lái)解決實(shí)際問(wèn)題的思想及方法。
通過(guò)這一章的學(xué)習(xí),我掌握了隊(duì)列的定義,概念,創(chuàng)建以及“對(duì)頭刪除”,“隊(duì)尾插入”的原則。重點(diǎn)了解了判斷循環(huán)隊(duì)列空和滿的判斷條件。同堆棧一樣,隊(duì)列也是一種具有線性邏輯結(jié)構(gòu)、運(yùn)算受限制的數(shù)據(jù)結(jié)構(gòu)。與堆棧只在一端(棧頂)進(jìn)行元素的插入和刪除運(yùn)算不同的是,隊(duì)列是在對(duì)頭進(jìn)行插入,而在隊(duì)尾完成數(shù)據(jù)元素的刪除,所以隊(duì)列的算法和適用的應(yīng)用問(wèn)題與堆棧有很大的區(qū)別。隊(duì)列作為一類(lèi)常用的數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用于各種程序設(shè)計(jì)中。
第六章主要學(xué)習(xí)數(shù)組、系數(shù)矩陣和廣義表的基本概念、集中特殊矩陣的存儲(chǔ)結(jié)構(gòu)及基本運(yùn)算,在此基礎(chǔ)上學(xué)習(xí)特殊矩陣的計(jì)算算法與廣義表應(yīng)用等相關(guān)問(wèn)題。通過(guò)本章的學(xué)習(xí),要求掌握特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算。了解矩陣與廣義表的相關(guān)應(yīng)用。
通過(guò)這章的學(xué)習(xí)和前幾章的比較,我了解到前幾章的線性結(jié)構(gòu)中的數(shù)據(jù)元素都是非結(jié)構(gòu)的原子類(lèi)型,即每一個(gè)元素都是不可再分解的。本章討論的數(shù)組和廣義表等數(shù)據(jù)結(jié)構(gòu)可以看成是在前幾章線性結(jié)構(gòu)基礎(chǔ)上的一個(gè)擴(kuò)展:組成該數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)元素本身也是一個(gè)數(shù)據(jù)結(jié)構(gòu)。矩陣計(jì)算應(yīng)該數(shù)值計(jì)算方面的問(wèn)題,由于矩陣和數(shù)組的關(guān)系以及特殊矩陣存儲(chǔ)結(jié)構(gòu)的復(fù)雜性,進(jìn)而使得特殊矩陣的存儲(chǔ)結(jié)構(gòu)和算法也表現(xiàn)出其特殊性,所以數(shù)據(jù)機(jī)構(gòu)課程應(yīng)該解決其計(jì)算問(wèn)題。
第七章的學(xué)習(xí)重點(diǎn)是二叉樹(shù)的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)定義和各種基本算法,在此基礎(chǔ)上介紹二叉樹(shù)的一些應(yīng)用問(wèn)題。通過(guò)本章的學(xué)習(xí),我掌握了二叉樹(shù)概念及其性質(zhì)、二叉樹(shù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)等知識(shí),掌握二叉樹(shù)的建立、遍歷、線索化等基本概念和算法及性能分析,能熟練應(yīng)用二叉樹(shù)這章結(jié)構(gòu)來(lái)解決一些實(shí)際問(wèn)題,如哈夫曼樹(shù)及哈夫曼編碼、查找與排序(二叉樹(shù)排序)等問(wèn)題。了解堆棧排序及其算法等知識(shí)。二叉樹(shù)是非線性數(shù)據(jù)結(jié)構(gòu),是樹(shù)形結(jié)構(gòu)的一種特殊形式。在現(xiàn)實(shí)生活有許多數(shù)據(jù)關(guān)系可抽象為樹(shù)或二叉樹(shù)的形式。本章中的二叉樹(shù)的概念及其性質(zhì)、二叉排序樹(shù)、存儲(chǔ)結(jié)構(gòu)、遍線索(化)、基本算法為重點(diǎn)內(nèi)容,二叉排序樹(shù)的應(yīng)用為難點(diǎn)內(nèi)容。
第八章的學(xué)習(xí)重點(diǎn)是樹(shù)和森林的數(shù)據(jù)結(jié)構(gòu)、基本算法及其性能分析,樹(shù)和森林與二叉樹(shù)間的轉(zhuǎn)化算法等,在此基礎(chǔ)上介紹樹(shù)的應(yīng)用——B-樹(shù)。通過(guò)本章的學(xué)習(xí),我掌握了樹(shù)和森林的概念和性質(zhì)、數(shù)據(jù)結(jié)構(gòu)、樹(shù)的基本算法及性能分析、樹(shù)與二叉樹(shù)間的轉(zhuǎn)換及其算法,并能應(yīng)用B-樹(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)元素的動(dòng)態(tài)查找。舒適一種非線性結(jié)構(gòu),它在二叉樹(shù)的基礎(chǔ)上做了更為一般化的擴(kuò)展,而森林是樹(shù)的集合。在樹(shù)結(jié)構(gòu)中,每一個(gè)元素最多只有一個(gè)前驅(qū),但可能有多個(gè)后繼。現(xiàn)實(shí)生活中的家族關(guān)系、單位的組成結(jié)構(gòu)等,均可抽象為樹(shù)的形式。
第九章學(xué)習(xí)重點(diǎn)是散列結(jié)構(gòu)的相關(guān)知識(shí),學(xué)習(xí)常用的散列函數(shù)和沖突處理方法,散列表的常用算法及其性能分析,通過(guò)本章的學(xué)習(xí),我掌握了散列結(jié)構(gòu)和散列函數(shù)的相關(guān)概念,掌握散列結(jié)構(gòu)的存儲(chǔ)(散列表)的相關(guān)概念,要求掌握散列沖突處理方法(散列法)的相關(guān)知識(shí),并能靈活運(yùn)用散列法解決應(yīng)用問(wèn)題。
散列結(jié)構(gòu)是使用散列函數(shù)建立數(shù)據(jù)結(jié)點(diǎn)關(guān)鍵字與存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系并提供多種當(dāng)數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)地址發(fā)生“沖突”時(shí)的處理方法而建立的一種數(shù)據(jù)結(jié)構(gòu)。散列結(jié)構(gòu)的查找等運(yùn)算效率是很高的,本章中的散列函數(shù)、散列結(jié)構(gòu)、散列表、散列法的基本概念和基本算法是重點(diǎn),線性探測(cè)散列算法、鏈地址法散列算法和散列法的應(yīng)用是難點(diǎn)。
第十章的學(xué)習(xí)重點(diǎn)是圖的定義及性質(zhì),圖的四種存儲(chǔ)結(jié)構(gòu),圖的兩種遍歷算法以及圖的典型應(yīng)用,包括最小生成樹(shù)、最短路徑、拓?fù)渑判蚝完P(guān)鍵路徑等。通過(guò)本章學(xué)習(xí),我掌握了圖的概念和基本性質(zhì),圖的存儲(chǔ)結(jié)構(gòu)(鄰接矩陣和鄰接表)及其基本算法、圖的遍歷及算法、圖的最小生成樹(shù)普利姆算法或者克魯斯卡爾算法、圖的最短路徑迪杰斯特拉算法和弗洛伊德算法、有向無(wú)環(huán)圖拓?fù)渑判蛩惴?。了解了圖的逆鄰接表、十字鏈表、鄰接多重表存儲(chǔ)結(jié)構(gòu)及其基本算法、關(guān)鍵路徑求解算法,并能靈活運(yùn)用圖的不同的數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復(fù)雜的應(yīng)用問(wèn)題。
二.課程學(xué)習(xí)體會(huì)
在學(xué)習(xí)開(kāi)始的時(shí)候,老師就明確提出它不是一種計(jì)算機(jī)語(yǔ)言,不會(huì)介紹C語(yǔ)言的變成語(yǔ)言,而是通過(guò)學(xué)習(xí)可以設(shè)計(jì)出良好的算法,高效地組織數(shù)據(jù)。一個(gè)程序無(wú)論采用何種語(yǔ)言,其基本算法思想不會(huì)改變。聯(lián)系到在大一和大二上學(xué)期學(xué)習(xí)的C和C++語(yǔ)言,我深刻認(rèn)識(shí)到了這一點(diǎn)?!败浖_(kāi)發(fā)好比寫(xiě)作文,計(jì)算機(jī)語(yǔ)言提供了許多華麗的辭藻,而數(shù)據(jù)結(jié)構(gòu)則考慮如何將這些辭藻組織成一篇優(yōu)秀的文章來(lái)。”在學(xué)習(xí)這門(mén)課中,要熟悉對(duì)算法思想的一些描述手段,包括文字描述、圖形描述和計(jì)算機(jī)語(yǔ)言描述等。因此,計(jì)算機(jī)語(yǔ)言基礎(chǔ)是必須的,因?yàn)樗峁┝艘环N重要的算法思想描述手段——機(jī)器可識(shí)別的描述。
這門(mén)課結(jié)束之后,我總結(jié)了學(xué)習(xí)中遇到的一些問(wèn)題,最為突出的,書(shū)本上的知識(shí)與老師的講解都比較容易理解,但是當(dāng)自己采用剛學(xué)的知識(shí)點(diǎn)編寫(xiě)程序時(shí)卻感到十分棘手,有時(shí)表現(xiàn)在想不到適合題意的算法,有時(shí)表現(xiàn)在算法想出來(lái)后,只能將書(shū)本上原有的程序段謄寫(xiě)到自己的程序中再加以必要的連接以完成程序的編寫(xiě)。針對(duì)這一情況,我會(huì)嚴(yán)格要求自己,熟練掌握算法思想,盡量獨(dú)立完成程序的編寫(xiě)與修改工作,只有這樣,才能夠提高運(yùn)用知識(shí),解決問(wèn)題的能力。
三.對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)的建議
1、建議在上課過(guò)程中加大隨堂練習(xí)的分量,以便學(xué)生能當(dāng)堂消化課堂上學(xué)習(xí)的知識(shí),也便于及時(shí)了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,同時(shí)有助于學(xué)生上課積極思考,不會(huì)開(kāi)小差。
2、建議在課時(shí)允許的情況下,增加習(xí)題課的分量,通過(guò)課堂的習(xí)題講解,加深對(duì)知識(shí)點(diǎn)的掌握,同時(shí)對(duì)各知識(shí)點(diǎn)的運(yùn)用有一個(gè)更為直觀和具體的認(rèn)識(shí)。
以上便是我對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》這門(mén)課的學(xué)習(xí)總結(jié),我會(huì)抓緊時(shí)間將沒(méi)有吃透的知識(shí)點(diǎn)補(bǔ)齊。今后我仍然會(huì)繼續(xù)學(xué)習(xí),克服學(xué)習(xí)中遇到的難關(guān),在打牢基礎(chǔ)的前提下向更深入的層面邁進(jìn)!
第五篇:數(shù)據(jù)結(jié)構(gòu)與算法課程學(xué)習(xí)總結(jié)報(bào)告
數(shù)據(jù)結(jié)構(gòu)與算法課程學(xué)習(xí)總結(jié)報(bào)告
數(shù)據(jù)結(jié)構(gòu)與算法是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)科學(xué)的核心課程,而且也已經(jīng)成為其他理工專(zhuān)業(yè)的熱門(mén)選修課。隨著高級(jí)語(yǔ)言的發(fā)展,數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)的研究和應(yīng)用中已展現(xiàn)出強(qiáng)大的生命力,它兼顧了諸多高級(jí)語(yǔ)言的特點(diǎn),是一種典型的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,它處理能力強(qiáng),使用靈活方便,應(yīng)用面廣,具有良好的可移植性。通過(guò)學(xué)習(xí),先報(bào)告如下:
一、數(shù)據(jù)結(jié)構(gòu)與算法知識(shí)點(diǎn)
本學(xué)期學(xué)的《數(shù)據(jù)結(jié)構(gòu)與算法》這本書(shū)共有十一個(gè)章節(jié):
第一章的內(nèi)容主要包括有關(guān)數(shù)據(jù)、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、算法、算法實(shí)現(xiàn)、C語(yǔ)言使用中相關(guān)問(wèn)題和算法分析等基本概念和相關(guān)知識(shí)。其中重點(diǎn)式數(shù)據(jù)、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、算法等概念;C語(yǔ)言中則介紹了指針、結(jié)構(gòu)變量、函數(shù)、遞歸、動(dòng)態(tài)存儲(chǔ)分配、文件操作、程序測(cè)試與調(diào)試問(wèn)題等內(nèi)容。
第二章主要介紹的是線性邏輯結(jié)構(gòu)的數(shù)據(jù)在順序存儲(chǔ)方法下的數(shù)據(jù)結(jié)構(gòu)順序表(包括順序串)的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其相關(guān)應(yīng)用。其中重點(diǎn)一是順序表的定義、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算和性能分析等概念和相關(guān)知識(shí)。二是順序表的應(yīng)用、包括查找問(wèn)題(簡(jiǎn)單順序查找、二分查找、分塊查找)、排序問(wèn)題(直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序、歸并排序)、字符處理問(wèn)題(模式匹配)等內(nèi)容。本章重點(diǎn)和難點(diǎn)在查找和排序問(wèn)題的算法思想上,6種排序方法的性能比較。
第三章主要介紹的是線性邏輯結(jié)構(gòu)的數(shù)據(jù)在鏈接存儲(chǔ)方法下數(shù)據(jù)結(jié)構(gòu)鏈表的相關(guān)知識(shí)。主要是單鏈表、循環(huán)鏈表的數(shù)據(jù)類(lèi)型結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其實(shí)現(xiàn)以及鏈表的相關(guān)應(yīng)用問(wèn)題,在此基礎(chǔ)上介紹了鏈串的相關(guān)知識(shí)。在應(yīng)用方面有多項(xiàng)式的相加問(wèn)題、歸并問(wèn)題、箱子排序問(wèn)題和鏈表在字符處理方面的應(yīng)用問(wèn)題等。本章未完全掌握的是循環(huán)鏈表的算法問(wèn)題和C的描述。
第四章介紹在兩種不同的存儲(chǔ)結(jié)構(gòu)下設(shè)計(jì)的堆棧,即順序棧和鏈棧的相關(guān)知識(shí),了解堆棧的相關(guān)應(yīng)用,掌握應(yīng)用堆棧來(lái)解決實(shí)際問(wèn)題的思想及方法。本章主要內(nèi)容是順序棧和鏈棧的概念、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)定義和基本運(yùn)算算法及其性能分析。本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握。
第五章主要介紹順序存儲(chǔ)和鏈接存儲(chǔ)方法下的兩種隊(duì)列、順序(循環(huán))隊(duì)列和鏈隊(duì)列的數(shù)據(jù)結(jié)構(gòu)、基本運(yùn)算及其性能分析以及應(yīng)用。順序隊(duì)列(重點(diǎn)是循環(huán)隊(duì)列)和鏈隊(duì)列的概念、數(shù)據(jù)類(lèi)型描述、數(shù)據(jù)結(jié)構(gòu)和基本運(yùn)算算法及其性能分析等。本章同堆棧有點(diǎn)類(lèi)似,算法思想較為簡(jiǎn)單,所以能較好掌握;但難點(diǎn)重在循環(huán)隊(duì)列隊(duì)空、隊(duì)滿的判斷條件問(wèn)題。第六章“特殊矩陣、廣義表及其應(yīng)用”將學(xué)習(xí)數(shù)組、稀疏矩陣和廣義表的基本概念,幾種特殊矩陣的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算,在此基礎(chǔ)上學(xué)習(xí)特殊矩陣的計(jì)算算法與廣義表應(yīng)用等相關(guān)問(wèn)題。本章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。
第七章“二叉樹(shù)及其應(yīng)用”的知識(shí)結(jié)構(gòu)主要是:非線性結(jié)構(gòu)數(shù)據(jù)二叉樹(shù)的定義、性質(zhì)、邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及其各種基本運(yùn)算算法,包括二叉樹(shù)的建立、遍歷、線索化等算法。在此基礎(chǔ)上,介紹二叉樹(shù)的一些應(yīng)用問(wèn)題,包括哈夫曼編碼問(wèn)題、(平衡)二叉排序樹(shù)問(wèn)題和堆排序問(wèn)題等。
第八章“樹(shù)和森林及其應(yīng)用”介紹樹(shù)和森林的數(shù)據(jù)結(jié)構(gòu)、基本算法及其性能分析,樹(shù)和森林與二叉樹(shù)之間的轉(zhuǎn)換算法等,在此基礎(chǔ)上介紹樹(shù)的應(yīng)用---B-樹(shù),應(yīng)用B-樹(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)元素的動(dòng)態(tài)查找。本章基本掌握樹(shù)和森林的概念和性質(zhì)、數(shù)據(jù)結(jié)構(gòu)、樹(shù)的基本算法及性能分析,樹(shù)和二叉樹(shù)間的轉(zhuǎn)換及其算法,并用應(yīng)用B-樹(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)元素的動(dòng)態(tài)查找未能掌握好。
第九章“散列結(jié)構(gòu)及其應(yīng)用”是邏輯結(jié)構(gòu)“集合型”的數(shù)據(jù)元素在散列存儲(chǔ)方法下的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用知識(shí)內(nèi)容。主要介紹散列函數(shù)的概念、散列結(jié)構(gòu)的概念、散列存儲(chǔ)結(jié)構(gòu)的概念---散列表、散列函數(shù)和散列表中解決沖突的處理方法---開(kāi)放定址法、鏈地址法以及散列表的基本算法及其性能分析。本章概念較為多,所以掌握不太好。
第十章“圖及其應(yīng)用”是邏輯結(jié)構(gòu)為“圖形”的數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用知識(shí)內(nèi)容,主要介紹圖的定義和基礎(chǔ)知識(shí),圖的2種存儲(chǔ)結(jié)構(gòu)。圖的基本算法以及圖的典型應(yīng)用問(wèn)題(最小生成樹(shù)、最短路徑、拓?fù)渑判蚝完P(guān)鍵路徑等)。
二、對(duì)各知識(shí)點(diǎn)的掌握情況
我對(duì)各知識(shí)點(diǎn)的掌握情況總結(jié)如下:
第一章不太難,能基本掌握。但關(guān)系全書(shū)的時(shí)間性能分析有些未能全部掌握。第二章本章重點(diǎn)和難點(diǎn)在查找和排序問(wèn)題的算法思想上,6種排序方法的性能比較。本章未掌握的為希爾排序、快速排序、歸并排序的時(shí)間復(fù)雜度分析。第三章,對(duì)鏈表掌握還好,對(duì)其數(shù)據(jù)結(jié)構(gòu)進(jìn)行了分析,有循環(huán)鏈表,掌握的不是很好,對(duì)其中一些用法不熟練。第四章堆棧,本章堆棧算法思想較為簡(jiǎn)單,所以能較好掌握,但表達(dá)式計(jì)算問(wèn)題未掌握好的。第五章的循環(huán)隊(duì)列隊(duì)空、隊(duì)滿的判斷條件問(wèn)題掌握的不是很好。第六章的重點(diǎn)是相關(guān)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法。掌握了特殊矩陣的壓縮存儲(chǔ)結(jié)構(gòu),在該存儲(chǔ)結(jié)構(gòu)下元素的定位方法,理解了稀疏矩陣的計(jì)算和廣義表的存儲(chǔ)結(jié)構(gòu)。第七章對(duì)二叉樹(shù)掌握較好,其概念,存儲(chǔ),遍歷有很好的掌握。就是對(duì)二叉排序樹(shù)有點(diǎn)生疏,它的生成算法不是很會(huì)。第八章樹(shù)樹(shù)與二叉樹(shù)之間的轉(zhuǎn)換,森林與二叉樹(shù)的轉(zhuǎn)換算法思想基本掌握。第九章散列的一些知識(shí),沒(méi)有深入學(xué)習(xí),大概了解了散列存儲(chǔ)結(jié)構(gòu)散列表,散列函數(shù),沖突的處理方法。第十章了解了圖的逆鄰接表的存儲(chǔ)結(jié)構(gòu),關(guān)鍵路徑求解算法未能掌握好,不能靈活運(yùn)用圖的不同數(shù)據(jù)結(jié)構(gòu)和遍歷算法解決復(fù)雜的應(yīng)用問(wèn)題。
三、學(xué)習(xí)體會(huì)
通過(guò)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法,讓我對(duì)程序有了新的認(rèn)識(shí),也有了更深的理解。同時(shí),也讓我認(rèn)識(shí)到,不管學(xué)習(xí)什么,概念是基礎(chǔ),所有的知識(shí)框架都是建立在基礎(chǔ)概念之上的,所以,第一遍看課本要將概念熟記于心,然后構(gòu)建知識(shí)框架。并且,對(duì)算法的學(xué)習(xí)是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵。在第二遍看課本的過(guò)程中,要注重對(duì)算法的掌握。對(duì)于一個(gè)算法,讀一遍可能能讀懂,但不可能完全領(lǐng)會(huì)其中的思想。掌握一個(gè)算法,并不是說(shuō)將算法背過(guò),而是掌握算法的思想。我們需要的是耐心。每看一遍就會(huì)有這一遍的收獲。讀懂算法之后,自己再默寫(xiě)算法,寫(xiě)到不會(huì)的地方,看看課本想想自己為什么沒(méi)有想到。對(duì)算法的應(yīng)用上,學(xué)習(xí)算法的目的是利用算法解決實(shí)際問(wèn)題。會(huì)寫(xiě)課本上已有的算法之后,可以借其思想進(jìn)行擴(kuò)展,逐步提高編程能力。
四、對(duì)課程教學(xué)的建議
1、感覺(jué)上課時(shí)的氣氛不是很好,雖然大部分人都在聽(tīng),可是效果不是很好。所以希望老師能在授課中間能穿插一些活躍課堂氛圍的話題,可以是大家都非常關(guān)心的一些內(nèi)容,這樣既讓大家能在思考之余有一個(gè)放松,也能夠提高學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效率。
2、學(xué)習(xí)的積極性很重要,有時(shí)候我們花了很長(zhǎng)時(shí)間去寫(xiě)實(shí)驗(yàn)報(bào)告,也很認(rèn)真的去理解去掌握,可是最后實(shí)驗(yàn)報(bào)告可能就只得了一個(gè)C,抄的人反而得A,這樣的話很容易打擊學(xué)生的積極性,在后面的實(shí)驗(yàn)報(bào)告中沒(méi)動(dòng)力再去認(rèn)真寫(xiě)。所以希望老師能在這方面有所調(diào)整。
3、雖然講課的時(shí)間很緊,但是還是希望老師能在講述知識(shí)點(diǎn)的時(shí)候能運(yùn)用實(shí)際的調(diào)試程序來(lái)給我們講解,這樣的話能讓我們對(duì)這些內(nèi)容有更深刻的印象和理解。