數(shù)據(jù)結(jié)構(gòu)范文
時(shí)間:2023-03-29 04:39:14
導(dǎo)語:如何才能寫好一篇數(shù)據(jù)結(jié)構(gòu),這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。
篇1
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu);知識體系;教學(xué)設(shè)計(jì)
1 課程的地位與作用
《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的核心專業(yè)基礎(chǔ)課程,是計(jì)算機(jī)程序設(shè)計(jì)的重要理論和實(shí)踐基礎(chǔ),是計(jì)算機(jī)理論與技術(shù)的重要基石。《數(shù)據(jù)結(jié)構(gòu)》上承高級語言程序設(shè)計(jì),下啟算法分析與設(shè)計(jì),是計(jì)算機(jī)科學(xué)與技術(shù)人才素質(zhì)框架中的脊梁骨,對學(xué)生能力培養(yǎng)至關(guān)重要,向來是計(jì)算機(jī)本科教學(xué)的重中之重。調(diào)查表明已畢業(yè)的學(xué)生通過他們的工作實(shí)踐認(rèn)為《數(shù)據(jù)結(jié)構(gòu)》是最有用的課程之一,這也從另一方面說明了該課程的重要性。
計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的培養(yǎng)目標(biāo)之一是掌握計(jì)算機(jī)科學(xué)與技術(shù)的基本理論、計(jì)算機(jī)軟/硬件基本知識及應(yīng)用技術(shù),《數(shù)據(jù)結(jié)構(gòu)》在培養(yǎng)目標(biāo)的實(shí)現(xiàn)中具有舉足輕重的作用,是理解計(jì)算機(jī)科學(xué)與程序開發(fā)技術(shù)的關(guān)鍵課程。作為一門重要的專業(yè)必修課程,《數(shù)據(jù)結(jié)構(gòu)》課程既是對以往課程的深入和擴(kuò)展,也是為將來更加深入地學(xué)習(xí)其他專業(yè)課程打下基礎(chǔ)。課程中所學(xué)習(xí)的排序問題的算法,以及基本的樹、圖等數(shù)據(jù)結(jié)構(gòu),是計(jì)算機(jī)科學(xué)的基本功。B+樹等高級數(shù)據(jù)結(jié)構(gòu),也是數(shù)據(jù)庫、操作系統(tǒng)、編譯原理、計(jì)算機(jī)網(wǎng)絡(luò)等后續(xù)課程的基礎(chǔ)?!稊?shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)專業(yè)考研的統(tǒng)考課程,也是很多大賽(“藍(lán)橋杯”、ACM等)必涉及的知識。
《數(shù)據(jù)結(jié)構(gòu)》與其它課程關(guān)系如圖1所示。
圖1 《數(shù)據(jù)結(jié)構(gòu)》與其它課程關(guān)系
《數(shù)據(jù)結(jié)構(gòu)》在培養(yǎng)目標(biāo)中的作用如圖2所示。
圖2 《數(shù)據(jù)結(jié)構(gòu)》在培養(yǎng)目標(biāo)中的作用
2 課程的教學(xué)目標(biāo)與主要內(nèi)容
2.1 課程的教學(xué)目標(biāo)
學(xué)習(xí)本課程后,應(yīng)達(dá)到下列基本要求:
(1)理解數(shù)據(jù)結(jié)構(gòu)的基本概念;
(2)熟練掌握線性表、棧、隊(duì)列、樹、圖等常用數(shù)據(jù)結(jié)構(gòu)的基本運(yùn)算的實(shí)現(xiàn)及應(yīng)用;
(3)熟練掌握排序和查找的常用算法及應(yīng)用;
(4)能夠?qū)λ惴ㄟM(jìn)行時(shí)間復(fù)雜度度、空間復(fù)雜度的分析;
(5)培養(yǎng)學(xué)生分析數(shù)據(jù)、組織數(shù)據(jù)的能力,能夠根據(jù)實(shí)際問題來選擇合適的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)有效的算法。
2.2 教材與主要參考資料
教材
耿國華《數(shù)據(jù)結(jié)構(gòu)(用C語言描述)》,高等教育出版社,2011年
教材選擇的依據(jù):
(1)該教材跟蹤技術(shù)發(fā)展需要,體系科學(xué),是“十一五”國家級規(guī)劃教材。
(2)該教材理論的闡述由淺入深、通俗易懂。
(3)該教材理論結(jié)合實(shí)際,配有大量的例題、習(xí)題與實(shí)習(xí)題。
主要參考資料
[1]嚴(yán)蔚敏,吳偉民《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,清華大學(xué)出版社,2006年
[2]張銘,王騰蛟,趙海燕《數(shù)據(jù)結(jié)構(gòu)與算法》,高等教育出版社,2008年
[3]朱戰(zhàn)立《數(shù)據(jù)結(jié)構(gòu)――使用C語言(第4版)》,電子工業(yè)出版社,2009年
[4]王曉東《數(shù)據(jù)結(jié)構(gòu)(C語言版).》電子工業(yè)出版社,2007年
[5]西北大學(xué)數(shù)據(jù)結(jié)構(gòu)精品課程網(wǎng)站
http//:/datastr
[6]北大數(shù)據(jù)結(jié)構(gòu)與算法課程網(wǎng)站
http:///pkujpk/course/sjjg/
[7]洛陽理工學(xué)院數(shù)據(jù)結(jié)構(gòu)精品課程網(wǎng)站
http//:/sjjg
[8]洛陽理工學(xué)院數(shù)據(jù)結(jié)構(gòu)精品資源共享課程網(wǎng)站
http//:/ds
2.3 知識體系
《數(shù)據(jù)結(jié)構(gòu)》知識體系可分為分為三大塊,如圖3所示。
圖3 《數(shù)據(jù)結(jié)構(gòu)》知識體系
數(shù)據(jù)結(jié)構(gòu)課程的基本知識模塊是以數(shù)據(jù)的邏輯結(jié)構(gòu)為主線,順序介紹線性結(jié)構(gòu)(線性表、棧、隊(duì)列、串、數(shù)組、廣義表)、樹形結(jié)構(gòu)、圖結(jié)構(gòu)。在介紹每種數(shù)據(jù)結(jié)構(gòu)時(shí),再討論其存儲結(jié)構(gòu)以及相關(guān)的算法。在介紹完基本的數(shù)據(jù)結(jié)構(gòu)及其存儲結(jié)構(gòu)和相關(guān)的算法后,介紹了兩種常用技術(shù):查找和排序。
3 課程教學(xué)內(nèi)容安排
3.1 課程重點(diǎn)、難點(diǎn)
重點(diǎn):線性表、棧、隊(duì)列、二叉樹、圖典型數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作的實(shí)現(xiàn)方法,各種典型的排序和查找算法思想。
難點(diǎn):各種數(shù)據(jù)結(jié)構(gòu)的操作實(shí)現(xiàn)和應(yīng)用
第1章是對數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識,基本概念比較多,概念要講清楚、準(zhǔn)確,第一章要通過豐富的例子講解如何分析算法時(shí)間復(fù)雜度,這是貫穿整門課程的內(nèi)容,也是本課程的一個(gè)難點(diǎn),第2章是整個(gè)課程的重要基礎(chǔ),要講得十分詳細(xì),為后面的章節(jié)打下良好的基礎(chǔ),第3章的棧與遞歸的實(shí)現(xiàn)是本書的一個(gè)難點(diǎn),要通過例子講透,并且在第6章還要進(jìn)一步地講遞歸到非遞歸的轉(zhuǎn)換。第四章內(nèi)容較簡單,而且學(xué)生在高級語言程序設(shè)計(jì)中學(xué)習(xí)過字符串,因此留給學(xué)生自學(xué),也可以培養(yǎng)學(xué)生的自學(xué)能力。第五章數(shù)組和廣義表一般講解即可。第6章的二叉樹要詳細(xì)講解,第7章的幾個(gè)關(guān)于圖的算法較難,要結(jié)合例子講解,第8章中的難點(diǎn)是平衡二叉樹的調(diào)整和B樹,要通過例子把算法的思想講清楚,使學(xué)生能實(shí)際操作。第9章要把各種排序的思想、特點(diǎn)講清楚,特別是較難的希爾排序、快速排序、堆排序、基數(shù)排序一定要結(jié)合實(shí)例講解。
3.2 課時(shí)分配
表1 總課時(shí):72;理論授課:58,實(shí)驗(yàn):14
4 課程實(shí)踐環(huán)節(jié)
數(shù)據(jù)結(jié)構(gòu)是與實(shí)踐緊密結(jié)合的課程,學(xué)生學(xué)習(xí)的理論必須經(jīng)過大量的實(shí)踐才能更好的掌握,因此必須強(qiáng)化實(shí)踐教學(xué)。數(shù)據(jù)結(jié)構(gòu)實(shí)踐分兩部分:一部分是隨課程進(jìn)行的實(shí)驗(yàn),另一部分是課程結(jié)束后為期一周的課程設(shè)計(jì)。通過合理、有效地設(shè)計(jì)上機(jī)題目,改進(jìn)實(shí)驗(yàn)考核方式,調(diào)動學(xué)生的積極性,啟發(fā)引導(dǎo)學(xué)生掌握基礎(chǔ)理論并能創(chuàng)新應(yīng)用,增強(qiáng)學(xué)生綜合運(yùn)用有關(guān)知識的能力。
實(shí)驗(yàn)內(nèi)容包括六個(gè)實(shí)驗(yàn)項(xiàng)目,分別為:線性表的基本操作(2學(xué)時(shí)),棧的基本操作(2學(xué)時(shí)),隊(duì)列的基本操作(2學(xué)時(shí)),二叉樹的建立及遍歷(2學(xué)時(shí)),圖的遍歷的實(shí)現(xiàn)(2學(xué)時(shí)),宿舍管理查詢系統(tǒng)(4學(xué)時(shí))。其中宿舍管理查詢系統(tǒng)實(shí)驗(yàn)為三性實(shí)驗(yàn)。
課程設(shè)計(jì)是課程結(jié)束后進(jìn)行的很重要的實(shí)踐環(huán)節(jié),本課程課程設(shè)計(jì)給出14個(gè)題目,這些題目都是綜合性的,學(xué)生可任選一題,完成后要寫出課程設(shè)計(jì)報(bào)告。通過課程設(shè)計(jì),使學(xué)生進(jìn)一步理解和掌握所學(xué)各種基本知識,培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的能力;訓(xùn)練學(xué)生用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),使學(xué)生具備軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。
學(xué)生完成實(shí)驗(yàn)后,不僅要求學(xué)生提交高質(zhì)量的規(guī)范的實(shí)驗(yàn)報(bào)告,還要引導(dǎo)學(xué)生互相交流,開闊視野。好的實(shí)驗(yàn)作業(yè)要放到班級公共郵箱里和所有學(xué)生共享。
5 課程的建設(shè)情況
5.1 課程資源情況
該課程教學(xué)文件完備。通過多年的教學(xué),積累了必要的一些輔助教學(xué)資料(包括教學(xué)參考書、參考課件、聲像、影像等),并且使用效果良好。補(bǔ)充的學(xué)習(xí)資料有:
(1)教學(xué)網(wǎng)站:http:///sjjg/
http:///ds/
(2)搜集了大量探討數(shù)據(jù)結(jié)構(gòu)理論與算法、介紹學(xué)科前沿動態(tài)的中、英文學(xué)術(shù)論文和碩、博論文,對其分類整理后在課程教學(xué)網(wǎng)站上提供下載鏈接,以供學(xué)生深入研究、學(xué)習(xí);
(3)自編《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書》;
(4)多媒體電子教案的紙制版和網(wǎng)絡(luò)版;
(5)數(shù)據(jù)結(jié)構(gòu)與課程實(shí)驗(yàn)指導(dǎo)書的紙制版和網(wǎng)絡(luò)版;
(6)自編的算法演示器;
(7)Flash課件和Flash算法演示;
(8)圖書館內(nèi),國外優(yōu)秀的經(jīng)典教材。
5.2 實(shí)驗(yàn)實(shí)習(xí)條件
所有實(shí)驗(yàn)在計(jì)算機(jī)系機(jī)房進(jìn)行,機(jī)房現(xiàn)有的實(shí)驗(yàn)平臺功能齊全,課程中所涉及的實(shí)驗(yàn)項(xiàng)目均可在平臺上完成。目前課程實(shí)驗(yàn)大綱中所列的實(shí)驗(yàn)開出率達(dá)到100%,實(shí)驗(yàn)教學(xué)效果良好。
5.3 課程成果
該課程2010年被評為河南省級精品課程,2012河南省級精品資源課程。
6 教學(xué)設(shè)計(jì)
《數(shù)據(jù)結(jié)構(gòu)》是一門理論與實(shí)踐相結(jié)合的課程。由于理論的抽象性,學(xué)生難以建立起數(shù)據(jù)結(jié)構(gòu)的相應(yīng)算法概念,容易產(chǎn)生畏懼和茫然的情緒。因此教學(xué)中在積極引導(dǎo)學(xué)生、啟發(fā)學(xué)生,激發(fā)學(xué)生學(xué)習(xí)的積極性。教學(xué)以課堂講授為主,同時(shí)借助網(wǎng)絡(luò)教學(xué)平臺,拓展課堂講授的相關(guān)知識,便于同學(xué)自主學(xué)習(xí)、鞏固課堂所學(xué)內(nèi)容。另外,組織獨(dú)立習(xí)題課,針對學(xué)生作業(yè)中出現(xiàn)的典型問題進(jìn)行深入探討。
在教學(xué)中要貫徹“以理論學(xué)習(xí)為主線,以課程實(shí)驗(yàn)、課程設(shè)計(jì)為補(bǔ)充”的教學(xué)思想。
6.1 精心組織教學(xué)內(nèi)容
分析學(xué)生的需求和現(xiàn)實(shí),同時(shí)緊緊抓住教學(xué)目的,參考相關(guān)院校的教材和教學(xué)計(jì)劃,取長補(bǔ)短,參考考研大綱、軟考大綱,對課程的內(nèi)容進(jìn)行嚴(yán)格的篩選,刪除一些較深且應(yīng)用不是很廣泛的內(nèi)容,對于重點(diǎn)的內(nèi)容要精講、細(xì)講,而對于有些較簡單且與先修課程交叉的內(nèi)容(如字符串與數(shù)組),就粗講,甚至可以留給學(xué)生去自學(xué)。這樣重點(diǎn)突出,簡潔明了。在課程內(nèi)容的安排上由淺入深,循序漸進(jìn)。對每種數(shù)據(jù)結(jié)構(gòu)都按三個(gè)層次來組織教學(xué)內(nèi)容,并且把這三個(gè)層次的思想貫穿于數(shù)據(jù)結(jié)構(gòu)教學(xué)的各個(gè)環(huán)節(jié)。第一個(gè)層次,基本概念、方法,這是最基本的內(nèi)容,學(xué)生必須掌握,在學(xué)生很好地掌握了這個(gè)層次的內(nèi)容后,可進(jìn)入第二個(gè)層次,基本概念、知識的簡單應(yīng)用,這一層次是對基本概念、知識加深理解,這個(gè)層次學(xué)生必須達(dá)到。第三個(gè)層次就是基本概念、方法的深入應(yīng)用,把所學(xué)的知識、方法串起來靈活運(yùn)用。要達(dá)到這個(gè)層次,需經(jīng)過大量的訓(xùn)練才行。
6.2 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程與其先修和后續(xù)課程的無縫銜接
程序設(shè)計(jì)語言(如C語言)是本課程的一門非常重要的先修課程,數(shù)據(jù)庫原理、編譯原理、操作系統(tǒng)是該課程的后續(xù)課程,這些課程不能各自為政,而要無縫銜接,教這些課程的老師要互相交流,這樣在講程序設(shè)計(jì)語言時(shí)可以有的放矢的把和數(shù)據(jù)結(jié)構(gòu)聯(lián)系緊密的內(nèi)容預(yù)先告知學(xué)生,這樣學(xué)生就會對相關(guān)知識印象深刻,到數(shù)據(jù)結(jié)構(gòu)課中就很容易用的得心應(yīng)手。在數(shù)據(jù)結(jié)構(gòu)課中講到各種后續(xù)課程中用到的數(shù)據(jù)結(jié)構(gòu)時(shí)也告訴學(xué)生,并且在后續(xù)課程中用到相關(guān)數(shù)據(jù)結(jié)構(gòu)時(shí)提醒學(xué)生這是這種數(shù)據(jù)結(jié)構(gòu)在本課程中的應(yīng)用。這樣使學(xué)生的知識一脈相承,使學(xué)生在學(xué)習(xí)各門課程時(shí)把知識融會貫通。
6.3 精講多練,加強(qiáng)實(shí)踐環(huán)節(jié),培養(yǎng)學(xué)生分析問題解決問題的能力
數(shù)據(jù)結(jié)構(gòu)既有大量的理論又是實(shí)踐性很強(qiáng)的課程,學(xué)生要很好地掌握這門課,必須要有一定的理論知識,又要經(jīng)過大量的上機(jī)實(shí)踐。因此,針對應(yīng)用型本科的特點(diǎn),在教學(xué)過程中,即注重理論,又重視實(shí)踐,加大上機(jī)實(shí)踐的力度。實(shí)踐由與理論課同時(shí)進(jìn)行的上機(jī)實(shí)驗(yàn)和理論課講授完畢后的課程設(shè)計(jì)兩部分組成。對所學(xué)的每一部分內(nèi)容都要要求學(xué)生完成相應(yīng)的實(shí)驗(yàn)習(xí)題。整個(gè)實(shí)踐過程要結(jié)合教學(xué)進(jìn)度與學(xué)生的實(shí)際情況,制定實(shí)踐的內(nèi)容。每部分的實(shí)驗(yàn)習(xí)題必須精心挑選,和上述三個(gè)層次對應(yīng),分為基礎(chǔ)與驗(yàn)證型實(shí)驗(yàn)、設(shè)計(jì)與綜合型實(shí)驗(yàn),開發(fā)與創(chuàng)新型實(shí)驗(yàn)。既要把基本知識掌握好,又要會靈活運(yùn)用?;A(chǔ)與驗(yàn)證型實(shí)驗(yàn)是基本的、較簡單的題目,主要結(jié)合課堂理論教學(xué)內(nèi)容展開,學(xué)生可以對在課堂上學(xué)到的基本算法進(jìn)行驗(yàn)證;設(shè)計(jì)與綜合型實(shí)驗(yàn)是具有挑戰(zhàn)性的較難的新穎有趣的題目,讓學(xué)生充分利用所學(xué)的理論知識進(jìn)行相對較復(fù)雜的應(yīng)用設(shè)計(jì),培養(yǎng)學(xué)生綜合能力;開發(fā)與創(chuàng)新型實(shí)驗(yàn)培養(yǎng)學(xué)生的創(chuàng)新意識,提高綜合能力和創(chuàng)新實(shí)踐能力。
6.4 多樣化的教學(xué)方法
6.4.1 啟發(fā)式教學(xué)
教師主要起引導(dǎo)的作用,激發(fā)學(xué)生的學(xué)習(xí)興趣,發(fā)揮學(xué)生的學(xué)習(xí)積極性,與學(xué)生進(jìn)行互動,鼓勵學(xué)生對教學(xué)內(nèi)容提出問題,師生共同討論,提高教學(xué)和學(xué)習(xí)水平。鼓勵學(xué)生多動腦子進(jìn)行思考,在學(xué)習(xí)過程中不拘于以往的解法,對同一個(gè)問題可以提出不同的解法,深化對問題的理解。另外還要強(qiáng)調(diào)學(xué)生自己學(xué)會對知識的總結(jié)、梳理、推演和挖掘??偨Y(jié)是教學(xué)中一個(gè)非常重要的環(huán)節(jié),不可忽視。通過對所學(xué)內(nèi)容的總結(jié)、梳理、推演和挖掘,理清內(nèi)容的內(nèi)在聯(lián)系,使知識條理化、系統(tǒng)化,加強(qiáng)對知識的理解和掌握,培養(yǎng)學(xué)生的歸納總結(jié)能力和思維創(chuàng)造能力,對所學(xué)內(nèi)容提煉出精華的東西。(下轉(zhuǎn)第260頁)
(上接第167頁)6.4.2 對比式教學(xué)
對同一問題,引導(dǎo)學(xué)生從不同的角度去思考,找出多種方法來解決。比如,在解決約瑟夫環(huán)問題時(shí),可以采用循環(huán)鏈表作存儲結(jié)構(gòu),或采用線性表的順序存儲結(jié)構(gòu),也可以采用數(shù)組作存儲結(jié)構(gòu)。這種對同一問題尋找不同算法實(shí)現(xiàn)的教學(xué)方式,有效地開闊了學(xué)生的思路,同時(shí)通過對不同算法的比較,加深了學(xué)生對算法的理解和掌握。
6.4.3案例教學(xué)
通過實(shí)例引入知識點(diǎn)。比如講最小生成樹可以通過城市間建立通信聯(lián)絡(luò)網(wǎng)為例引入最小生成樹及其求解算法,再比如講最短路徑可以通過去旅游選擇最短路徑為例引入最短路徑及其求解方法。
6.5 把課程與考研、軟考、相關(guān)競賽有機(jī)的結(jié)合起來
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)考研和軟考的必考科目,在教學(xué)過程中有意識地把考研和軟考引入教學(xué)中,使學(xué)生學(xué)完本課程后能夠從容應(yīng)對考研和軟考中的數(shù)據(jù)結(jié)構(gòu)題目。組織和鼓勵學(xué)生參加程序員,高級程序員證書考試,輔導(dǎo)學(xué)生參加各種編程競賽比如ACM大賽。
7 考核方法
要加強(qiáng)平時(shí)的學(xué)習(xí)過程管理,不定時(shí)地進(jìn)行一些隨堂的小測試,課堂提問等??荚囈詫W(xué)生完成日常作業(yè)和實(shí)驗(yàn)環(huán)節(jié)為必要條件,期末考試采用筆試方式。成績評定由三部分組成:期末考試占總成績的60%,平時(shí)成績占總成績的20%,實(shí)驗(yàn)占總成績的20%,綜合考核學(xué)生該科成績。
8 結(jié)語
《數(shù)據(jù)結(jié)構(gòu)》對計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生來說是非常重要的課程,組織好教學(xué),使學(xué)生通過該課程的教學(xué),很好地掌握數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,為今后的學(xué)習(xí)奠定良好的基礎(chǔ)是非常重要的。
【參考文獻(xiàn)】
篇2
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);實(shí)踐教學(xué);指針;結(jié)構(gòu)體;C語言
中圖分類號:TP311.12
1 指針和結(jié)構(gòu)體的概念
在程序中定義一個(gè)變量,如int x;在編譯時(shí)系統(tǒng)就根據(jù)定義的變量類型,給這個(gè)變量分配相應(yīng)的內(nèi)存單元。內(nèi)存中每個(gè)字節(jié)都有一個(gè)編號,稱為“地址”,在地址所標(biāo)識的內(nèi)存單元中存放數(shù)據(jù)。在程序中,一般通過變量名對內(nèi)存單元進(jìn)行存取操作,稱為“直接訪問”,如x=7;printf(“%d”,x);假設(shè)定義一個(gè)變量p,用于存放整型變量x的地址,int*p=&x;則變量p稱為“指針變量”,我們稱指針p指向x。通過指針p訪問x,稱為“間接訪問”,如*p。
因此定義指針變量的格式是:基類型 *指針變量名;
引用指針變量的格式是:*指針變量名。
結(jié)構(gòu)體將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,定義一個(gè)新的數(shù)據(jù)類型,格式:typedef struct
{成員列表}結(jié)構(gòu)體名;
結(jié)構(gòu)體變量的引用格式:結(jié)構(gòu)體變量名.成員名。
2 線性結(jié)構(gòu)中指針和結(jié)構(gòu)體的使用
線性結(jié)構(gòu)中數(shù)據(jù)元素之間是1:1的線性關(guān)系,線性表是最基本的線性結(jié)構(gòu),有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種存儲方法。順序存儲結(jié)構(gòu)是在內(nèi)存中用一段連續(xù)的存儲單元來依次存儲線性表的數(shù)據(jù)元素,用元素在機(jī)內(nèi)的物理位置相鄰表示邏輯相鄰關(guān)系,常借助于數(shù)組來表示數(shù)據(jù)存儲區(qū)域。因此順序表類型定義如下:
#define MaxSize 100 // MaxSize是數(shù)組的容量,便于后期進(jìn)行插入運(yùn)算
typedef char DataType; //程序中的DataType設(shè)定為char型,便于統(tǒng)一修改
typedef struct{
DataType data[MaxSize];//data數(shù)組用于存放數(shù)據(jù)元素
int Last;//整型變量last存放當(dāng)前順序表中最后一個(gè)數(shù)據(jù)元素的下標(biāo)值
}SeqList;//SeqList為順序表的數(shù)據(jù)類型
SeqList*L;//定義一個(gè)指針變量L
L=new SeqList;//new用來申請順序表的存儲空間,L指向此順序表
順序表表長:L->Last+1
順序表中的數(shù)據(jù)元素:L->data[0]~L->data[L->Last]
比如順序表的插入運(yùn)算Insert_SeqList(SeqList *L,int i,DataType x)基本語句如下:
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];//從最后一個(gè)元素到第i個(gè)元素逐一后移
L->data[i-1]=x; //在i位置處插入元素x
L->last++; //表長加1
鏈?zhǔn)酱鎯Y(jié)構(gòu)是用一組任意的存儲單元存放線性表的數(shù)據(jù)元素,邏輯次序和物理次序不一定相同,元素之間的邏輯關(guān)系用指針表示。單鏈表的類型定義如下:
typedef struct Node{
DataType data;//數(shù)據(jù)域,存儲數(shù)據(jù)元素
struct Node * next;//指針域,存儲后繼結(jié)點(diǎn)的地址
}Lnode,*LinkList;
LNode*p;//定義一個(gè)LNode類型的指針變量p
p->data //p所指結(jié)點(diǎn)的數(shù)據(jù)域
p->next //p所指結(jié)點(diǎn)的指針域,即后繼結(jié)點(diǎn)的存儲地址
LinkList:指向LNode類型的指針變量,通常用于定義頭指針的數(shù)據(jù)類型,如
LinkList head; //定義了一個(gè)頭指針head
比如在p所指向的數(shù)據(jù)元素之后插入新結(jié)點(diǎn),基本語句為:
LNode*s;//定義一個(gè)LNode類型的指針變量s
s=new LNode;//申請結(jié)點(diǎn)空間
s->data=x;
s->next=p->next;
p->next=s;//注意:兩個(gè)語句的操作順序不能交換。
3 樹形結(jié)構(gòu)中指針和結(jié)構(gòu)體的使用
樹形結(jié)構(gòu)中數(shù)據(jù)元素之間是一對多的關(guān)系,以二叉樹為例,一般采用鏈?zhǔn)酱鎯Y(jié)構(gòu),便于進(jìn)行插入、刪除運(yùn)算。二叉樹類型定義如下:
typedef struct node{
DataType data; //數(shù)據(jù)域
struct node *lchild,*rchild; //左右指針域
}BiTNode;
typedef BiTNode *BiTree; //指向二叉樹結(jié)點(diǎn)的指針類型
如構(gòu)造二叉樹算法如下:
void CreateBiTree( BiTree*t) //構(gòu)造二叉鏈表
{ char ch;
scanf("\n%c",&ch);
if(ch=='0') *t=NULL; //讀入0時(shí),將相應(yīng)結(jié)點(diǎn)置空
else{*t=new BiTNode; //申請結(jié)點(diǎn)空間
(*t)->data=ch;
CreateBiTree(&(*t)->lchild); //構(gòu)造二叉樹的左子樹
CreateBiTree(&(*t)->rchild); //構(gòu)造二叉樹的右子樹
} }
4 圖形結(jié)構(gòu)中指針和結(jié)構(gòu)體的使用
圖形結(jié)構(gòu)中數(shù)據(jù)元素之間是多對多的關(guān)系,一般采用鄰接矩陣進(jìn)行存儲,存儲頂點(diǎn)和邊(或者?。┑男畔ⅰR脏徑泳仃嚧鎯D的類型定義:
typedef struct{
int visited[MaxV]; //頂點(diǎn)表
int edges[MaxV][MaxV]; //邊表
int vertexN,edgeN; //頂點(diǎn)數(shù)和邊數(shù)
}Graph;
比如圖的深度優(yōu)先遍歷算法如下:
void DFS (Graph*G,int v){
int w;
G->visited[v]=1;
for(w=0;wvertexN;w++){
if(G->edges[v][w] && !G->visited[w]) { DFS(G, w); }
} }
5 結(jié)束語
指針和結(jié)構(gòu)體在數(shù)據(jù)結(jié)構(gòu)中頻繁使用,希望通過本文的講解,幫助學(xué)生理解結(jié)構(gòu)體定義數(shù)據(jù)類型的方法,掌握利用指針完成操作的方法,學(xué)好《數(shù)據(jù)結(jié)構(gòu)》這門課程,為后續(xù)專業(yè)課奠定良好的基礎(chǔ)。
參考文獻(xiàn):
[1]譚浩強(qiáng).C程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,2002.
[2]劉振鵬.數(shù)據(jù)結(jié)構(gòu)(第六版)[M].北京:中國鐵道出版社,2010.
[3]楊麗萍.數(shù)據(jù)結(jié)構(gòu)中指針的應(yīng)用及分析[J].計(jì)算機(jī)時(shí)代,2012(02).
[4]孔兵.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)中指針相關(guān)問題[J].教育教學(xué)論壇,2014(01).
篇3
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);教學(xué)模式;教學(xué)方法
中圖分類號:G424文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)24-1219-02
Discussion on the Tteaching Practice of "Data Structure"
CHEN Pei-zheng, ZHANG Hao-ming
(Department of Medical Informatics, Guangdong College of Pharmacy, Guangzhou 510003, China)
Abstract: The course of "Data Structure" is the foundation of computer theory and technology, which is abstruse and hard to understand. It is a discussable topic on the teaching pattern and teaching method. In this paper, to prompt the teaching effect, how to take good teaching method on the process of teaching the course of "Data Structure" are discussed.
Key words: data structure; teaching pattern; teaching method
1 引言
《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)應(yīng)用專業(yè)的專業(yè)基礎(chǔ)課程,也是整個(gè)計(jì)算機(jī)學(xué)科體系中的四大支柱課程之一。該課程主要介紹各種離散結(jié)構(gòu)(如表、向量、集合、樹、圖等)在計(jì)算機(jī)上的存儲和處理,以及一些常用算法?!稊?shù)據(jù)結(jié)構(gòu)》也是一門理論性很強(qiáng)的課程,是從事計(jì)算機(jī)軟件開發(fā)的基礎(chǔ),對培養(yǎng)學(xué)生良好的編程思想和風(fēng)格也有很大的幫助作用?!稊?shù)據(jù)結(jié)構(gòu)》重在理論,其概念的抽象性、算法的經(jīng)典性和復(fù)雜性、描述語言的先進(jìn)性,導(dǎo)致在以往的教學(xué)中,理論教學(xué)和實(shí)踐教學(xué)未能很好的結(jié)合起來,加上通常大學(xué)學(xué)生的編程經(jīng)驗(yàn)相對較少,學(xué)習(xí)起來難度特別大,被公認(rèn)為是高校計(jì)算機(jī)課程中最難學(xué)好的課程之一。
2 《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法和措施
《數(shù)據(jù)結(jié)構(gòu)》課程具有較高的抽象性,學(xué)生普遍反應(yīng)難學(xué)。針對學(xué)生的特點(diǎn),筆者在《數(shù)據(jù)結(jié)構(gòu)》的課程教學(xué)實(shí)踐中總結(jié)了一些教學(xué)方法和措施,并取得了較好的效果。主要體現(xiàn)在以下幾個(gè)方面:
2.1 使學(xué)生合理認(rèn)識《數(shù)據(jù)結(jié)構(gòu)》課程
在課程開始階段,首先要強(qiáng)調(diào)這門課程的重要性,及其在計(jì)算機(jī)學(xué)科體系中的地位。數(shù)據(jù)結(jié)構(gòu)對于計(jì)算機(jī)專業(yè)的學(xué)生來說很重要,特別是對于從事計(jì)算機(jī)專業(yè),特別是軟件開發(fā)的人心里都清楚這點(diǎn)。有些愛好計(jì)算機(jī)的發(fā)燒友,自己學(xué)習(xí)了某種開發(fā)工具(編程語言),也能動手編程,但編出的程序總是顯得很“業(yè)余”,很難再做修改,或者進(jìn)行移植,為什么呢?這就是缺乏了學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這門課程。事實(shí)上,凡是真正學(xué)習(xí)了這門課程,都會認(rèn)為它是計(jì)算機(jī)專業(yè)與非專業(yè)的一個(gè)分水嶺。它不僅是計(jì)算機(jī)專業(yè)的核心課程, 也是其他理工科專業(yè)的熱門選修課,特別是非計(jì)算機(jī)專業(yè)攻讀計(jì)算機(jī)輔修專業(yè)的學(xué)生,或者學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的其他人員必須要學(xué)習(xí)的。
2.2 介紹《數(shù)據(jù)結(jié)構(gòu)》課程的特點(diǎn)和學(xué)習(xí)方法
說明這門課程的特點(diǎn)。很多同學(xué)反映數(shù)據(jù)結(jié)構(gòu)很抽象、很難學(xué)而且內(nèi)容又多。確實(shí),本課程需要一門程序設(shè)計(jì)語言的知識(例如C++語言),還需要一些離散數(shù)學(xué)的知識。有些同學(xué)由于沒有這方面的基礎(chǔ),導(dǎo)致在看書時(shí)無法理解各種算法的思想,更無法看懂實(shí)現(xiàn)這些算法的程序。針對這種現(xiàn)狀,就要求這些學(xué)生首先要補(bǔ)習(xí)相關(guān)知識,如有必要,還要專門增加課時(shí)進(jìn)行補(bǔ)習(xí)。在介紹課程的主要內(nèi)容時(shí),需要用明白易懂而又概括性強(qiáng)的語言來描述。
數(shù)據(jù)結(jié)構(gòu)中涉及很多C++算法,學(xué)生直接閱讀很困難,事實(shí)上所有計(jì)算機(jī)程序都這樣,讀別人的程序,如果不清楚算法的思想,可能比自己寫程序還難,即使自己寫的程序,過了較長一段時(shí)間,再讀會很困難。因此,本人制作的教學(xué)課件中,將一些比較重要又較難的算法做成了動畫演示,這樣其中的算法思想看起來就很直觀,易懂。然后,再對照C++算法的每一條語句,來演示其實(shí)際變化過程,這樣一步一步理解整個(gè)算法,這對同學(xué)的幫助很大。還有,準(zhǔn)備一些由淺到深的算法過程,讓同學(xué)來讀算法寫結(jié)果,幫助同學(xué)理解算法的意義。
另外,由于數(shù)據(jù)結(jié)構(gòu)涉及的內(nèi)容很多,教學(xué)中必須說明、區(qū)分重點(diǎn)內(nèi)容,否則教師和學(xué)生將花費(fèi)太多的精力和時(shí)間(事實(shí)上,輔導(dǎo)時(shí)間也不允許)。例如,針對算法描述,我會說明算法思想更重要,而算法的C++函數(shù)定義只重點(diǎn)要求幾個(gè)基本而典型的算法。事實(shí)上,中央電大歷屆的考題是這樣,電大學(xué)生的實(shí)際狀況也是這樣。在平時(shí)教學(xué)過程中,特別是期末復(fù)習(xí)時(shí),我會重點(diǎn)要求各種算法的基本思想,再針對部分算法的C++語言描述重點(diǎn)要求掌握。對這些重點(diǎn)內(nèi)容,不僅要多講解習(xí)題來印證,還要求同學(xué)下來完成平時(shí)作業(yè),并適當(dāng)補(bǔ)充一些往屆考題。
2.3 實(shí)例教學(xué),形象生動
所謂“實(shí)例教學(xué)”,就是對課程中的重點(diǎn)、難點(diǎn)內(nèi)容,選配適當(dāng)?shù)睦}、運(yùn)用恰當(dāng)?shù)谋扔鬟M(jìn)行演示和說明,把抽象的內(nèi)容具體化、形象化,幫助學(xué)生理解掌握這些內(nèi)容,并適當(dāng)加以引伸,引導(dǎo)并激發(fā)學(xué)生作進(jìn)一步的思考和探索。
應(yīng)該結(jié)合學(xué)生實(shí)際情況,使用更加通俗、形象、生動、直觀的教學(xué)語言和教學(xué)方法進(jìn)行講授,注重激發(fā)學(xué)生的學(xué)習(xí)興趣,更有效地幫助學(xué)生理解和掌握課程內(nèi)容。例如在講解堆棧和隊(duì)列的時(shí)候,學(xué)生對這兩個(gè)概念比較陌生,于是我們通過與日常生活中的疊盤子、食堂排隊(duì)買飯等現(xiàn)象聯(lián)系起來進(jìn)行比喻說明,學(xué)生不僅聽起來較有興趣,易于理解,而且效果也遠(yuǎn)比只單純地念定義要強(qiáng)得多。
從學(xué)生的角度來看,通過一個(gè)比較有趣的實(shí)例,學(xué)生可以較容易地弄懂一個(gè)較復(fù)雜的知識點(diǎn),在克服困難的過程中會不斷地獲得成就感,從而更大程度地激發(fā)他們的求知欲望,逐步形成一個(gè)感知心智活動的良性循環(huán),更能激發(fā)其繼續(xù)學(xué)習(xí)的欲望。
2.4 重視上機(jī)實(shí)踐,提高學(xué)生的學(xué)習(xí)興趣
本門課程強(qiáng)調(diào)對上機(jī)實(shí)驗(yàn)的要求,專門有實(shí)驗(yàn)指導(dǎo)教材,并要求每個(gè)實(shí)驗(yàn)都要寫出實(shí)驗(yàn)報(bào)告,就這門課程而言,不同教材采用不同的程序設(shè)計(jì)語言,以前還有自定義的一種語言,而現(xiàn)在都采用實(shí)際的計(jì)算機(jī)語言,例如Pascal語言,C語言,C++語言等,之所以要用一門計(jì)算機(jī)語言來數(shù)據(jù)結(jié)構(gòu)的算法,就是要達(dá)到這樣一個(gè)目的:讓學(xué)生在實(shí)際上機(jī)實(shí)踐操作時(shí),在程序的運(yùn)行、調(diào)試過程中,也即與計(jì)算機(jī)交流的過程,體會計(jì)算機(jī)解決問題的方式。而當(dāng)學(xué)生意識到這一點(diǎn)后,就會體會到軟件開發(fā)的奧秘,激發(fā)其興趣,慢慢就會自己上路從事軟件開發(fā)工作了。這就是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),學(xué)習(xí)數(shù)據(jù)組織和對已組織好的數(shù)據(jù)的基本處理對計(jì)算機(jī)專業(yè),特別是軟件開發(fā)專業(yè)學(xué)生的深刻影響。
2.5 聯(lián)系實(shí)際,學(xué)以致用
《數(shù)據(jù)結(jié)構(gòu)》是一門理論性課程,重在對編程思想和風(fēng)格的培養(yǎng),簡單的死記硬背一些概念、定義沒有任何的用處,我們講課的目的就是要讓學(xué)生在學(xué)習(xí)完《數(shù)據(jù)結(jié)構(gòu)》之后,能夠主動的將書中的知識靈活運(yùn)用到生活中去,所以在教學(xué)的過程中聯(lián)系實(shí)際非常重要。在教學(xué)過程中,我們努力使每個(gè)知識點(diǎn)都與具體的應(yīng)用實(shí)際聯(lián)系起來,促進(jìn)了學(xué)生的理解,提高了他們的實(shí)踐應(yīng)用能力。
例如我們在講授圖的概念時(shí),學(xué)生不理解圖的最小生成樹有何用處,于是我們列舉了網(wǎng)絡(luò)布線,城市道路建設(shè),郵遞員送信等大量應(yīng)用實(shí)例,同時(shí)啟發(fā)學(xué)生自己去發(fā)現(xiàn)其他的一些應(yīng)用實(shí)例。結(jié)果學(xué)生很感興趣,對這個(gè)知識點(diǎn)記憶非常深刻。
2.6 多課程結(jié)合,融會貫通
幾乎每一門課程都有前驅(qū)和后續(xù)課程,《數(shù)據(jù)結(jié)構(gòu)》也不例外。而且《數(shù)據(jù)結(jié)構(gòu)》作為一門專業(yè)基礎(chǔ)課程,同時(shí)又是計(jì)算機(jī)學(xué)科的支柱課程之一,其中的很多知識將貫穿計(jì)算機(jī)知識學(xué)習(xí)的整個(gè)過程。所以講授《數(shù)據(jù)結(jié)構(gòu)》更應(yīng)該注重與其他相關(guān)課程的聯(lián)系,通過《數(shù)據(jù)結(jié)構(gòu)》的講解使學(xué)生對整個(gè)計(jì)算機(jī)課程有一個(gè)較全面的了解,讓學(xué)生在頭腦中形成一條清晰的學(xué)科主線。
例如在講解稀疏矩陣的時(shí)候,我們先簡單回顧《多媒體》課程中圖像壓縮的方法,然后告訴學(xué)生之所以可以壓縮圖像,是因?yàn)閳D像中含有大量的稀疏矩陣,同時(shí),稀疏矩陣的存儲方法和訪問方法會直接影響圖像的壓縮效果和壓縮效率。通過這個(gè)例子,學(xué)生不但理解了稀疏矩陣的相關(guān)概念,同時(shí)也將本門課程同《多媒體》課程中的相關(guān)知識有機(jī)地聯(lián)系起來了。
3 結(jié)束語
由于《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)專業(yè)的骨干、核心課程,也是大多數(shù)學(xué)校研究生入學(xué)考試的必考課程。因此,對于該課程的教學(xué)不僅要從理論上進(jìn)行探討,還要從內(nèi)容結(jié)構(gòu)、教學(xué)方法等方面進(jìn)行研究,作者根據(jù)自己的教學(xué)經(jīng)驗(yàn)和體會完成本文,與各位同行交流,希望共同搞好《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)工作。
參考文獻(xiàn):
[1] 周婭.“數(shù)據(jù)結(jié)構(gòu)”課堂教學(xué)與學(xué)生創(chuàng)新思維培養(yǎng)[J].桂林電子工業(yè)學(xué)院學(xué)報(bào),2006,26(4):326-328.
篇4
關(guān)鍵詞 數(shù)據(jù)結(jié)構(gòu) 微課 碎片時(shí)間
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)一門重要的基礎(chǔ)課程,其中涉及到了大量難度較大的算法描述,例如在模式匹配中的KMP算法,樹中的二叉樹搜索樹和圖中的迷宮,最短路徑問題等。
學(xué)習(xí)過程中,學(xué)生們普遍遇到的問題是,經(jīng)常當(dāng)堂無法領(lǐng)悟難度較大的算法,或者當(dāng)堂領(lǐng)悟了,過后由于算法的復(fù)雜度較高,個(gè)別知識點(diǎn)的的遺忘造成無法理順整個(gè)思路。但幾乎所有從事計(jì)算機(jī)編程的學(xué)生都會有這樣的反饋:數(shù)據(jù)結(jié)構(gòu)在實(shí)際應(yīng)用中非常重要且實(shí)用。綜上所述,如何提高數(shù)據(jù)結(jié)構(gòu)課程的當(dāng)堂授課效果,或者提供一些學(xué)生可以很容易自學(xué)的課下輔助教學(xué)平臺,是非常有意義和值得探討的問題。
“微課”是指以視頻為主要載體,記錄教師在課堂內(nèi)外教育教學(xué)過程中圍繞某個(gè)知識點(diǎn)(重點(diǎn)難點(diǎn)疑點(diǎn))或教學(xué)環(huán)節(jié)而開展的精彩教與學(xué)活動全過程。與傳統(tǒng)的教學(xué)視頻相比,“微”體現(xiàn)在時(shí)間的短和內(nèi)容的精悍,能夠充分滿足人們生活的快節(jié)奏所帶來的利用“碎片時(shí)間”進(jìn)行學(xué)習(xí)的需求,而移動互聯(lián)網(wǎng)的迅猛發(fā)展,為這一需求提供了必要的硬件基礎(chǔ),以手機(jī)為載體,隨時(shí)隨地觀看微小視頻進(jìn)行知識的學(xué)習(xí)和補(bǔ)充成為可能。數(shù)據(jù)結(jié)構(gòu)課程的微課化是指,利用微課形式,通過視頻,將數(shù)據(jù)結(jié)構(gòu)中的難點(diǎn)算法進(jìn)行有效的講解和展示,讓學(xué)生或自學(xué)人員可以不受時(shí)間、地點(diǎn)的限制,進(jìn)行相關(guān)知識點(diǎn)的學(xué)習(xí),跟傳統(tǒng)的視頻教學(xué)相比,克服了時(shí)長(一般為40到60分鐘)所帶來的畏難心理,以10分鐘左右為一個(gè)單元,可以在短時(shí)間內(nèi)輕松獲取知識。但這也對視頻的制作和知識點(diǎn)的提煉、組織提出了更高的要求,短小而又精悍,給人以深刻的印象,又能達(dá)到學(xué)會的目的,是微課制作的難點(diǎn)所在。
以數(shù)據(jù)結(jié)構(gòu)中的二叉搜索樹為例,二叉搜索的概念其實(shí)在現(xiàn)實(shí)生活中就經(jīng)常使用,例如看商品猜價(jià)格,就用到了二叉搜索的方式,設(shè)計(jì)該微課時(shí),就可以以此為切入點(diǎn),首先通過看商品猜價(jià)格游戲的方式進(jìn)行知識點(diǎn)的引入,在猜價(jià)格的過程中,通過軟件編程控制,提示價(jià)格猜高或者猜低,最終引導(dǎo)用戶猜中價(jià)格,根據(jù)用戶猜測的次數(shù)給出一個(gè)不同的提示,如果成績不理想,用戶可以進(jìn)一步學(xué)習(xí)失敗的原因(猜測策略),然后提高猜中效率。興趣是最好的老師,通過這個(gè)有趣的開端,大家就有了進(jìn)一步學(xué)習(xí)的欲望。接下來是二叉搜索樹的創(chuàng)建,一組需要查找的無序數(shù)據(jù),如果組織,才能盡可能地高效地完成搜索任意一個(gè)數(shù)據(jù)的過程,利用二叉搜索樹,可以在避免傳統(tǒng)排序的基礎(chǔ)上,進(jìn)行高效的查找,于是如何建立出這樣一棵二叉搜索樹,成為大家進(jìn)一步關(guān)心的知識點(diǎn)。通過前期自動演示,學(xué)習(xí)者可以很容易地掌握算法的思想,然后借助于一些交互功能較強(qiáng)的軟件,可以實(shí)現(xiàn)由用戶自己創(chuàng)建二叉搜索樹的過程。通過這一系列的演示過程,用戶可以很容易地學(xué)到二叉搜索樹的相關(guān)知識點(diǎn)。
以上所說,對于制作微課的人員來講,技術(shù)上的難度是存在的,制作者要求會錄制,編輯視頻,還要掌握一些交互式課件的制作軟件,以及聲音的錄制,多媒體合成等等,但教授數(shù)據(jù)結(jié)構(gòu)課程的教師,不同于其他專業(yè),本身就是從事計(jì)算機(jī)技術(shù)的,有著這方面的獨(dú)特優(yōu)勢,因此,只要根據(jù)需求稍加學(xué)習(xí),就能很快地掌握這些技術(shù),這也是數(shù)據(jù)結(jié)構(gòu)課程可以微課化的一個(gè)優(yōu)勢條件。微課質(zhì)量的好壞,關(guān)鍵還在于設(shè)計(jì),好的設(shè)計(jì)可以彌補(bǔ)技術(shù)上不足,因此千萬不要因?yàn)檫^于重注技術(shù)而忽略設(shè)計(jì)。
隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,通過網(wǎng)絡(luò)進(jìn)行隨時(shí)隨地的學(xué)習(xí)已經(jīng)成為一種必然的方式,對于數(shù)據(jù)結(jié)構(gòu)中較難的知識點(diǎn),傳統(tǒng)的課堂視頻錄制時(shí)間長、效果差,不便于學(xué)生利用碎片時(shí)間學(xué)習(xí),通過巧妙的設(shè)計(jì),利用多種形式,多種技術(shù)將其呈現(xiàn)為可視化的小視頻,可以大幅度提高學(xué)生的學(xué)習(xí)效果。通過微課這種新型的教學(xué)手段,可以讓類似數(shù)據(jù)結(jié)構(gòu)這種難度大、難理解的課程,更好地輔助學(xué)生完成知識點(diǎn)的回顧和難點(diǎn)的掌握,快速地完成復(fù)雜算法的學(xué)習(xí),為后續(xù)課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ),對全面提升學(xué)習(xí)效率有著積極的意義。
篇5
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);Floyd最短路徑算法;醫(yī)院選址;C語言
中圖分類號:G642.41 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2014)36-0280-02
一、引言
《數(shù)據(jù)結(jié)構(gòu)》課程是計(jì)算機(jī)類、信息管理類、電子商務(wù)、經(jīng)濟(jì)類及相關(guān)專業(yè)的一門重要的專業(yè)基礎(chǔ)課程。早在1968年,美國一些學(xué)校的計(jì)算機(jī)系就開設(shè)《數(shù)據(jù)結(jié)構(gòu)》課程。20世紀(jì)70年代中后期,我國也開設(shè)《數(shù)據(jù)結(jié)構(gòu)》課程作為計(jì)算機(jī)專業(yè)的核心課程。開設(shè)該課程的目的在于讓學(xué)者了解數(shù)據(jù)的計(jì)算機(jī)外部邏輯結(jié)構(gòu)和計(jì)算機(jī)內(nèi)部的存儲結(jié)構(gòu)以及相關(guān)操作,它為后續(xù)的專業(yè)課程,如編譯原理、數(shù)據(jù)庫原理、操作系統(tǒng)、系統(tǒng)分析與設(shè)計(jì)等課程提供必要的知識和技能準(zhǔn)備。本人認(rèn)為數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)中的難點(diǎn)包括遞歸程序的閱讀、非線性結(jié)構(gòu)中圖和樹的相關(guān)算法,尤其是圖的最短路徑、拓?fù)渑判颉㈥P(guān)鍵路徑的基本應(yīng)用,學(xué)習(xí)難點(diǎn)在于:圖的存儲結(jié)構(gòu)、圖中頂點(diǎn)的定位、圖中各個(gè)頂點(diǎn)的訪問方法等。本文試圖就圖的最短路徑算法的學(xué)習(xí)過程進(jìn)行探討。在學(xué)習(xí)中,我們發(fā)現(xiàn):在圖形結(jié)構(gòu)中,節(jié)點(diǎn)之間的關(guān)系可以是任意的,圖中任意兩個(gè)元素之間都有可能相鄰,如果對圖進(jìn)行操作或者遍歷的話,必須先確定圖中第一個(gè)訪問的頂點(diǎn),才能對其他頂點(diǎn)進(jìn)行訪問(操作),因此,圖是一種比線性表和樹更為復(fù)雜的非線性數(shù)據(jù)結(jié)構(gòu)。圖之所以仍然作為《數(shù)據(jù)結(jié)構(gòu)》課程的重要內(nèi)容出現(xiàn),是因?yàn)閳D的存儲結(jié)構(gòu)容易定義和掌握,但是需要通過圖的形式化定義及其相關(guān)操作來實(shí)現(xiàn)具體問題的求解,這就是我們所說的在《數(shù)據(jù)結(jié)構(gòu)》的圖中需要掌握的重要知識點(diǎn)。圖的運(yùn)算已經(jīng)成為人們解決實(shí)際問題的重要工具,比如通過Prim算法或Kruskal算法求最小生成樹以構(gòu)造最低價(jià)的通信網(wǎng);通過關(guān)鍵路徑求解確定一個(gè)工程中的“關(guān)鍵工程”;通過Dijkstra算法求某個(gè)源點(diǎn)到其余各個(gè)頂點(diǎn)的最短路徑,解決物流配送的最短路徑選擇;通過Floyd算法計(jì)算每一對頂點(diǎn)之間的最短路徑,用于確定設(shè)施的選址。本文重點(diǎn)討論Floyd算法在醫(yī)院選址問題中的應(yīng)用。
醫(yī)院是社會的重要基礎(chǔ)設(shè)施,醫(yī)院建設(shè)的選址必須本著以人為本、服務(wù)社會、經(jīng)濟(jì)效益的原則,如何使群眾就醫(yī)路徑較短,是醫(yī)院選址需要充分考慮的問題,本文以患者就醫(yī)路徑最短為切入點(diǎn),選址問題轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)圖論中的求解最短路徑的問題,并采用Floyd算法對最短路徑問題進(jìn)行求解,為醫(yī)院的選址問題提供定量分析。
二、Floyd算法基礎(chǔ)概念
1.圖:頂點(diǎn)和連線的集合,G=(V,VR),其中V是圖中頂點(diǎn)的有窮非空集合,VR是兩個(gè)頂點(diǎn)的關(guān)系的集合,即圖中連線的集合。若VR中頂點(diǎn)對是有序的,則為有向圖,否則為無向圖。
2.連通圖:在無向圖或者有向圖G=(V,VR)中,若任意兩個(gè)頂點(diǎn)v,w都能找到一條路徑連接v和w,G即為連通圖。
3.網(wǎng):帶權(quán)值的圖稱為網(wǎng)。
4.鄰接矩陣:表示頂點(diǎn)之間連接關(guān)系的矩陣。網(wǎng)的鄰接矩陣定義如下:
A[i,j]=w■,(v■,v■)或∈VR∞,其他
三、Floyd算法基本思想
最短路徑問題是數(shù)據(jù)結(jié)構(gòu)圖論中的一個(gè)典型問題,這里的最短路徑,不僅僅指的是距離的長短,還可以引申為經(jīng)濟(jì)費(fèi)用、時(shí)間等廣義上的最短。在數(shù)據(jù)結(jié)構(gòu)中求解網(wǎng)絡(luò)中任意兩個(gè)頂點(diǎn)之間的最短路徑的典型算法是Floyd算法。
Floyd算法的基本思想是:從帶權(quán)鄰接矩陣出發(fā),若(vi,vj)存在,則存在路徑長度D[i][j],但該路徑不一定是最短路徑,需要進(jìn)行n次試探。如果存在一個(gè)k,且D[i][k]+D[k][j]
四、實(shí)例應(yīng)用
(一)醫(yī)院選址問題建模
現(xiàn)假設(shè)給定n個(gè)村莊之間的交通圖,現(xiàn)在要從這n個(gè)村莊中選擇一個(gè)村莊建一所醫(yī)院,要求離醫(yī)院最遠(yuǎn)的村莊到醫(yī)院的路程最短。
上述問題中,可將地理信息中的交通網(wǎng)絡(luò)抽象為數(shù)學(xué)模型,以頂點(diǎn)表示村莊,以連線表示村莊之間的道路,因此交通圖轉(zhuǎn)化為由有限頂點(diǎn)和有限條邊組成的無向圖,圖中頂點(diǎn)之間的關(guān)系由權(quán)值表示,定義權(quán)矩陣為前述網(wǎng)的帶權(quán)鄰接矩陣,wij的值為村莊之間的道路距離。這樣醫(yī)院選址問題就轉(zhuǎn)化為在全部頂點(diǎn)之間最短距離的最大值中尋找最小值的問題,按照Floyd算法進(jìn)行運(yùn)算。
(二)醫(yī)院選址算法示例
1.假設(shè)有6個(gè)村莊,村莊v0、v1之間道路距離為12,v0、v2為3,v0、v4為9,v0、v5為10,v1、v3為2,v1、v4為6,v2、v3為2,v2、v5為6,v3、v4為4,v3、v5為7,v4、v5為4。將6個(gè)村莊作為頂點(diǎn),有直接道路的村莊之間連線,頂點(diǎn)之間的邊所對應(yīng)的權(quán)值為村莊之間的道路距離。
2.按照上文的算法,建立帶權(quán)鄰接矩陣D0。
3.第一次迭代,插入v0后計(jì)算最短路徑,即兩點(diǎn)之間可以有一個(gè)中間點(diǎn)的最短路徑,D1[i][j]=min{D0[i][j],D0[i]+D0[j]}。
4.第二次迭代,插入v1,D2[i][j]=min{D1[i][j],D1[i]+D1[j]},在D1的基礎(chǔ)上構(gòu)建D2。
5.第三次迭代,插入v2,D3[i][j]=min{D2[i][j],D2[i]+D2[j]},在D2的基礎(chǔ)上構(gòu)建D3。
6.第四次迭代,插入v3,D4[i][j]=min{D3[i][j],D3[i]+D3[j]},在D3的基礎(chǔ)上構(gòu)建D4。
7.第五次迭代,插入v4,D5[i][j]=min{D4[i][j],D4[i]+D4[j]},在D4的基礎(chǔ)上構(gòu)建D5。
8.第六次迭代,插入v5,D6[i][j]=min{D5[i][j],D5[i]+D5[j]},在D5的基礎(chǔ)上構(gòu)建D6,D6就是最后求得的最短距離矩陣。
9.以各個(gè)頂點(diǎn)為源點(diǎn)的最短距離的最大值maxdis={9,9,6,7,9,9},min{maxdis[i]}=6,對應(yīng)頂點(diǎn)為v2,因此本例的最終醫(yī)院選址為v2村莊。
(三)選址算法的C語言實(shí)現(xiàn)
1.圖的鄰接矩陣存儲結(jié)構(gòu)表示。
#define MAX_VERTEX_NUM 20 //最大頂點(diǎn)個(gè)數(shù)
#define INF 100000 //代替∞
vexs; //頂點(diǎn)向量,用于存儲頂點(diǎn)名稱
arcs; //鄰接矩陣
typedef int VRType;
typedef int VertexType;
//圖的鄰接矩陣存儲表示
typedef struct
{
VRType adj;
}AdjMatrix;
typedef struct
{
VertexType vexs; //頂點(diǎn)向量,用于存儲頂點(diǎn)的信息(名稱)
AdjMatrix arcs;
int vexnum,arcnum; //頂點(diǎn)數(shù)和弧數(shù)
}MGraph;
typedef int DistancMatrix; //距離矩陣
2.主要算法。
void shortesPath_Floyd(MGraph G, DistancMatrix * D)
{
?搖for(v=0;v
for(w=0;w
(*D)[v][w]=G.arcs[v][w].adj;
for(u=0;u
for(v=0;v
for(w=0;w
if((*D)[v][u]+(*D)[u][w]
?搖 ?搖?搖(*D)[v][w]=(*D)[v][u]+(*D)[u][w];//更新最短距離
}
void compare(MGraphG,DistancMatrixD)
{
?搖 for(i=0;i
?搖{
maxdis[i]=0;
for(j=0;j
if(maxdis[i]!=INF&&maxdis[i]
{
maxdis[i]=D[i][j];
maxi[i]=G.vexs[i];
}
}
for(i=0;i
if(maxdis[i]>maxdis[i+1]) //比較maxdis中的最小值,mini為醫(yī)院選址
{
min=maxdis[i+1];
mini=maxi[i+1];
}
}
五、結(jié)論
實(shí)際應(yīng)用中,醫(yī)院選址問題需要考慮眾多因素,可以設(shè)置權(quán)值為各項(xiàng)耗費(fèi)總值。本文運(yùn)用Floyd算法將醫(yī)院選址問題進(jìn)行了量化,并采用C語言實(shí)現(xiàn),在實(shí)際的設(shè)施合理選擇中,具有一定的理論意義和實(shí)用價(jià)值。除了選址問題,物流配送的路線選擇、旅游中最短路線的設(shè)計(jì)等問題都可以通過建立數(shù)學(xué)模型進(jìn)行算法設(shè)計(jì)。在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)過程中,我們更需要學(xué)會的是如何將實(shí)際問題抽象為合理的數(shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解決該模型的算法,最后進(jìn)行編程、測試得到最終解答。
參考文獻(xiàn):
[1]陳燕,曹妍,賈紅雨.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:科學(xué)出版社,2014.
[2]王軍,王偉,公長春.基于多因素評價(jià)法下的社區(qū)醫(yī)院投資研究[J].中國全科醫(yī)學(xué),2010,13(10A):3143-3144.
[3]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2009.
[4]王曉東.算法設(shè)計(jì)與分析[M].北京:清華大學(xué)出版社,2011.
[5]趙麗娜,李慧.基于Floyd最短路徑算法的教材中心選址問題[J].中國教育技術(shù)裝備,2014,(4):40-42.
篇6
關(guān)鍵詞邏輯結(jié)構(gòu)存儲結(jié)構(gòu)操作運(yùn)算橫向聯(lián)系縱向聯(lián)系
1引言
數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)核心學(xué)科,其主要研究內(nèi)容:邏輯結(jié)構(gòu),物理存儲結(jié)構(gòu),操作(或算法)[1]。通常,算法的設(shè)計(jì)取決于數(shù)據(jù)的邏輯結(jié)構(gòu),算法的實(shí)現(xiàn)取決于數(shù)據(jù)的物理存儲結(jié)構(gòu)。
根據(jù)數(shù)據(jù)元素之間不同特性,把數(shù)據(jù)結(jié)構(gòu)劃分四種基本結(jié)構(gòu):(1)集合,(2)線型結(jié)構(gòu),(3)樹型結(jié)構(gòu),(4)圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu)。針對每種數(shù)據(jù)結(jié)構(gòu)均從邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作運(yùn)算等方面進(jìn)行研究,是貫穿數(shù)據(jù)結(jié)構(gòu)研究始終的“紅線”,也是數(shù)據(jù)結(jié)構(gòu)研究的共同切入點(diǎn),稱之為數(shù)據(jù)結(jié)構(gòu)的“橫向聯(lián)系”。從集合、線型結(jié)構(gòu)等基本數(shù)據(jù)結(jié)構(gòu)入手,以實(shí)現(xiàn)樹形結(jié)構(gòu)、圖或網(wǎng)狀結(jié)構(gòu)等較復(fù)雜結(jié)構(gòu)研究,實(shí)現(xiàn)數(shù)據(jù)元素間的關(guān)系從簡單到復(fù)雜探討,稱之為“縱向聯(lián)系”。
2邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、操作運(yùn)算的思想模式——數(shù)據(jù)結(jié)構(gòu)間的橫向聯(lián)系
邏輯結(jié)構(gòu)的定義、存儲結(jié)構(gòu)的實(shí)現(xiàn)、操作運(yùn)算的實(shí)現(xiàn)是對數(shù)據(jù)結(jié)構(gòu)研究的基本思想,一種數(shù)據(jù)結(jié)構(gòu)的研究首先對這三方面內(nèi)容有一個(gè)清晰的探討。
集合數(shù)據(jù)結(jié)構(gòu)與數(shù)學(xué)中集合概念是一致的,其邏輯結(jié)構(gòu)元素間只是同屬關(guān)系。存儲結(jié)構(gòu)實(shí)現(xiàn)只是在計(jì)算機(jī)內(nèi)存儲,它的操作就是一些交、差、并、補(bǔ)等。
線型結(jié)構(gòu)是N個(gè)數(shù)據(jù)元素的有限序列,至于每一個(gè)數(shù)據(jù)元素的具體的含義在不同的情況下各不相同,其長度可根據(jù)需要增長或縮短,其邏輯結(jié)構(gòu)就是它的數(shù)據(jù)元素間的線形關(guān)系,即一個(gè)對一個(gè),一個(gè)元素最多有一個(gè)前驅(qū),最多有一個(gè)后繼。它的存儲結(jié)構(gòu)的實(shí)現(xiàn)一般有順序存儲和鏈?zhǔn)酱鎯煞N方法。順序表是指用一組地址連續(xù)的存儲單元依次存儲線性結(jié)構(gòu)中的數(shù)據(jù)元素,這是一種隨機(jī)存取的存儲結(jié)構(gòu);鏈?zhǔn)酱鎯κ菙?shù)據(jù)元素之間的邏輯關(guān)系由結(jié)點(diǎn)中的指針來表示并且每一個(gè)結(jié)點(diǎn)有且只有一個(gè)指針域。線性結(jié)構(gòu)的操作中,最基本的操作是在線性結(jié)構(gòu)中插入、刪除數(shù)據(jù)元素。存儲結(jié)構(gòu)為順序存儲有線性順序表、數(shù)組、串等。存儲結(jié)構(gòu)為鏈?zhǔn)酱鎯Y(jié)構(gòu)時(shí)有鏈表等。根據(jù)線性表的操作的不同便產(chǎn)生了兩種重要的數(shù)據(jù)結(jié)構(gòu)即棧和隊(duì)列,這兩種數(shù)據(jù)結(jié)構(gòu)是線性結(jié)構(gòu)的典型例子[2]。
樹型結(jié)構(gòu)是一種重要的非線性結(jié)構(gòu),其中的樹和二叉樹最為常用。直觀看來,樹是以分支關(guān)系定義的層次結(jié)構(gòu),其邏輯結(jié)構(gòu)是一對多的關(guān)系,而在二叉樹中是一個(gè)根結(jié)點(diǎn)對應(yīng)左右兩個(gè)孩子的層次關(guān)系。存儲結(jié)構(gòu)的實(shí)現(xiàn)當(dāng)采取順序存儲時(shí)用一組地址連續(xù)的存儲單元依上而下、自左向右存儲樹中的結(jié)點(diǎn)元素。在鏈?zhǔn)酱鎯Y(jié)構(gòu)中可采用二叉鏈表表示法即鏈表中結(jié)點(diǎn)的兩個(gè)鏈域分別指向該結(jié)點(diǎn)的第一個(gè)孩子和下一個(gè)兄弟結(jié)點(diǎn),樹形結(jié)構(gòu)的最基本的操作是遍歷,其它復(fù)雜的操作大部分就是遍歷操作的衍生與擴(kuò)展。在樹型結(jié)構(gòu)中最有特色的一種數(shù)據(jù)結(jié)構(gòu)就是二叉樹,其獨(dú)特的邏輯結(jié)構(gòu)是每個(gè)結(jié)點(diǎn)至多有二棵子樹并且還有左右之分,這就決定著它獨(dú)特的鏈?zhǔn)酱鎯Y(jié)構(gòu),每個(gè)數(shù)據(jù)元素有且只有兩個(gè)指針分別指向該結(jié)點(diǎn)的左右孩子。二叉樹的最基本的操作是遍歷二叉樹,對每個(gè)結(jié)點(diǎn)的訪問是對其它復(fù)雜操作的基礎(chǔ),例如統(tǒng)計(jì)結(jié)點(diǎn)個(gè)數(shù)、統(tǒng)計(jì)葉子結(jié)點(diǎn)數(shù)、交換二叉樹的左右孩子等一些復(fù)雜的操作運(yùn)算均是遍歷二叉樹操作的擴(kuò)展和衍生?;诙鏄涞倪f歸定義可得到遍歷二叉樹遞歸算法,前序遍歷、中序遍歷、后序遍歷二叉樹。
圖狀結(jié)構(gòu)是一種較線型結(jié)構(gòu)和樹更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),圖的邏輯結(jié)構(gòu)是多對多的關(guān)系即在圖形結(jié)構(gòu)中結(jié)點(diǎn)之間的關(guān)系是任意的。因此在存儲結(jié)構(gòu)中無法以數(shù)據(jù)元素在存儲區(qū)中的物理位置來表示數(shù)據(jù)元素間的關(guān)系。即圖沒有順序映象但可以借助數(shù)組的數(shù)據(jù)類型表示元素之間的關(guān)系,用兩個(gè)數(shù)組分別存儲數(shù)據(jù)元素(頂點(diǎn))的信息和數(shù)據(jù)元素之間的關(guān)系信息[3]。另一方面圖的存儲結(jié)構(gòu)也可由多重鏈表實(shí)現(xiàn),即一個(gè)由一個(gè)數(shù)據(jù)域和多個(gè)指針域組成的結(jié)點(diǎn)來表示圖中的一個(gè)頂點(diǎn),其中數(shù)據(jù)域存儲該頂點(diǎn)的信息,指針域存儲指向鄰接點(diǎn)的指針,但由于圖中各個(gè)結(jié)點(diǎn)的度各不相同,結(jié)點(diǎn)的指針域設(shè)定不易確定,則圖的鏈?zhǔn)酱鎯Y(jié)構(gòu)可用鄰接多重表表示法,對圖中每個(gè)頂點(diǎn)建立一個(gè)單鏈表,第一個(gè)單鏈表的結(jié)點(diǎn)表示依附于頂點(diǎn)V的邊,每個(gè)結(jié)點(diǎn)由三個(gè)域組成其中鄰接點(diǎn)域指示頂點(diǎn)V的鄰接點(diǎn)在圖中的位置,鏈域指示下一條邊或弧的結(jié)點(diǎn),數(shù)據(jù)域存儲和邊或弧相關(guān)的信息,如權(quán)值等。每個(gè)鏈表附有一個(gè)表頭結(jié)點(diǎn)。在表頭結(jié)點(diǎn)中除了設(shè)有鏈域指向鏈表中第一個(gè)結(jié)點(diǎn)外還設(shè)有存儲頂點(diǎn)的名或其它有關(guān)信息的數(shù)據(jù)域,這樣實(shí)現(xiàn)了圖的鏈?zhǔn)酱鎯Α1闅v是最基本的操作也是最重要的操作運(yùn)算,它是求解圖的連通性、拓?fù)渑判蚝颓箨P(guān)鍵路徑的基礎(chǔ),然而圖的遍歷比樹的遍歷復(fù)雜的多,因?yàn)閳D的任一頂點(diǎn)都有可能和其余的頂點(diǎn)相鄰接。所以在訪問某個(gè)頂點(diǎn)之后可能沿著某條路徑搜索之后又回到該頂點(diǎn)上。因此要設(shè)有一個(gè)輔助數(shù)組V[0..n-1],它的初始值置為假,一旦訪問頂點(diǎn)Vi,便置V[i]為真,這樣避免了同一個(gè)頂點(diǎn)被訪問多次,對圖的遍歷有深度優(yōu)先搜索和廣度優(yōu)先搜索。圖的深度優(yōu)先搜索遍歷類似樹的先根遍歷,是樹的先根遍歷的推廣。廣度優(yōu)先搜索類似樹的按層次遍歷的過程。圖狀結(jié)構(gòu)中復(fù)雜的操作大部分都是以圖的遍歷為基礎(chǔ)。
因此無論對于線型結(jié)構(gòu)、樹性結(jié)構(gòu)、網(wǎng)狀或圖,它們都遵循著邏輯結(jié)構(gòu)的定義、存儲結(jié)構(gòu)的實(shí)現(xiàn)、操作運(yùn)算方法的實(shí)現(xiàn)模式來實(shí)現(xiàn)每種數(shù)據(jù)結(jié)構(gòu)的類型。在數(shù)據(jù)結(jié)構(gòu)研究中對每種數(shù)據(jù)結(jié)構(gòu)的研究只有對它的這三個(gè)方面內(nèi)容的研究,才能對它進(jìn)行探索、掌握、改進(jìn)。這是數(shù)據(jù)結(jié)構(gòu)研究中的基本思想。在數(shù)據(jù)結(jié)構(gòu)研究中當(dāng)前面向各專門領(lǐng)域特殊問題的多維數(shù)據(jù)結(jié)構(gòu)和從抽象數(shù)據(jù)類型的觀點(diǎn)來討論數(shù)據(jù)結(jié)構(gòu),都不能背離這個(gè)思想。
3由棧和隊(duì)列實(shí)現(xiàn)樹、圖的遍歷——縱向聯(lián)系
遍歷操作對樹、圖結(jié)構(gòu)是很基礎(chǔ)、很重要的運(yùn)算,它是實(shí)現(xiàn)一個(gè)數(shù)據(jù)結(jié)構(gòu)的核心部分,雖然根據(jù)樹、圖的遞歸定義能設(shè)計(jì)出樹、圖的遍歷的遞歸算法,但從線型結(jié)構(gòu)到樹、圖的發(fā)展也是數(shù)據(jù)結(jié)構(gòu)從簡單到復(fù)雜的逐步發(fā)展過程。線型結(jié)構(gòu)中棧和隊(duì)列是兩個(gè)非常重要的數(shù)據(jù)結(jié)構(gòu),對于樹、圖的遍歷可用棧和隊(duì)列來實(shí)現(xiàn)。對樹、圖復(fù)雜的數(shù)據(jù)結(jié)構(gòu),可通過棧和隊(duì)列的操作來實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的操作,體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)間的“縱向聯(lián)系”。
用棧實(shí)現(xiàn)二叉樹的前序遍歷算法:
Statuspreorder(bitreet)
{P=t;
Initstack(s);
Push(s,p);
While(!stackempty(s)){
pop(s,p)
while(p){
visit(p);
push(s,prchild);
p=p-lchild;}
}}
用棧實(shí)現(xiàn)二叉樹的中序遍歷算法:
Statusinorder(bitreet)
{p=t;
Initstack(s);
Push(s,p);
P=Plchild;
while(!stackempty){
while(p){
push(s,p);
p=p-lchild;}
pop(s,p);
visist(p);
p=prchild;}}
用棧來實(shí)現(xiàn)二叉樹的后序遍歷算法:
Statuspostorder(bitreet){
P=t;
inistack(s);
While(p||!stackempty(s)){
If(p){
push(s,p);
P=plchild;}
ElseIf(!stackempty(s)){
pre=null;
Gettop(s,p);
While(prchild==pre){pop(s,p);
Visit(p);
Pre=p;
Gettop(s,p);}
P=prchild;}
}}}
用隊(duì)列實(shí)現(xiàn)二叉樹層次遍歷算法:
VoidLayers(bitreet){
if(t){
p=t;
Initqueue(q);
Enqueue(q,t);
while(!empty(q)){
p=Dlqueue(q);
visit(p);
if(Plchild)Enqueue(q,plchild);
if(prchild)Enqueue(q,prchild);}
}
用隊(duì)列實(shí)現(xiàn)圖的廣度優(yōu)先搜索算法:
VoidBfs(Graphg,intv){
Visit(v);
Visited[v]=true;
Enqueue(q,v);
While(!emptyqueue(q)){
Dlqueue(g,vex);
For(w=firstadjvex(g,vex),w,w=nextadjvex(g,vex,w)){
If(!visited[w]){visit(w);
Visited[w]=true;
Enqueue(q,w);}}
}}
VoidDfs(Graphg,intv){
Visit(v);
Visited[v]=true;
Push(s,v);
While(!emptystack(s)){V=gettop(s);
For(w=fistadjvex(g,v);w&&!visited[w];w=nextadjvex(g,v,w))
If(!w)pop(s)
Else{visit(w);
Visited[w]=true;
Push(s,w);}}
因?yàn)槎鏄洹D的其它的操作大部分是對遍歷基本操作的拓展或綜合應(yīng)用,靈活運(yùn)用棧和隊(duì)列可實(shí)現(xiàn),并且算法描述比較直觀。線性結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)學(xué)科的基礎(chǔ),樹、圖的發(fā)展在線性結(jié)構(gòu)的基礎(chǔ)上而發(fā)展,因樹、圖發(fā)展促進(jìn)著線性結(jié)構(gòu)中和一些算法的完善和改進(jìn),線型結(jié)構(gòu)、樹型結(jié)構(gòu)、圖狀結(jié)構(gòu)是緊密相聯(lián)的。
4抽象數(shù)據(jù)類型的研究
數(shù)據(jù)結(jié)構(gòu)間縱橫聯(lián)系明顯且緊密。運(yùn)用與把握這種“縱橫聯(lián)系”,對從抽象數(shù)據(jù)類型的角度來進(jìn)行數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)與研究有著重要的借鑒意義。
抽象數(shù)據(jù)類型(ADT)的研究越來越被人所重視[4-8],它可理解為數(shù)據(jù)類型的進(jìn)一步抽象。即把數(shù)據(jù)類型和數(shù)據(jù)類型上的運(yùn)算捆在一起,進(jìn)行封裝。引入抽象數(shù)據(jù)類型的目的是把數(shù)據(jù)類型的表示和數(shù)據(jù)類型上運(yùn)算的實(shí)現(xiàn)與這些數(shù)據(jù)類型和運(yùn)算在程序中的引用隔開,使它們相互獨(dú)立。對于抽象數(shù)據(jù)類型的描述,除了必須描述它的數(shù)據(jù)結(jié)構(gòu)外,還必須描述定義在它上面的運(yùn)算(過程或函數(shù))。抽象數(shù)據(jù)類型上定義的過程和函數(shù)以該抽象數(shù)據(jù)類型的數(shù)據(jù)所應(yīng)具有的數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)。它仍遵循邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、操作運(yùn)算的數(shù)據(jù)結(jié)構(gòu)基本思想,所有的抽象數(shù)據(jù)類型都可有簡單的分類策略獲得,這個(gè)策略就是抽象數(shù)據(jù)類型對象像什么和對它們做些什么。邏輯結(jié)構(gòu)定義、存儲結(jié)構(gòu)表示、操作的實(shí)現(xiàn)在抽象類型中它們被稱為數(shù)據(jù)類型說明、抽象數(shù)據(jù)類型的表示和抽象數(shù)據(jù)類型的實(shí)現(xiàn)[3]。抽象數(shù)據(jù)類型具體的表示和實(shí)現(xiàn)依賴所采用的語言,用戶可以用某高級語言的固有數(shù)據(jù)類型和自定義類型并借助于過程和函數(shù)來表示和實(shí)現(xiàn)抽象數(shù)據(jù)類型。
5結(jié)論
邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、操作運(yùn)算等核心方面是貫穿數(shù)據(jù)結(jié)構(gòu)研究與發(fā)展的一條基本線,也是數(shù)據(jù)結(jié)構(gòu)研究中所看到數(shù)據(jù)結(jié)構(gòu)間的“橫向聯(lián)系”。應(yīng)用基本數(shù)據(jù)結(jié)來實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的方法與途徑,這是對數(shù)據(jù)元素之間關(guān)系從簡單到復(fù)雜的探討,即為“縱向聯(lián)系”。數(shù)據(jù)結(jié)構(gòu)聯(lián)系是對數(shù)據(jù)結(jié)構(gòu)的整體把握,體現(xiàn)在這種“橫向聯(lián)系”和“縱向聯(lián)系”之中。靈活運(yùn)用與把握這種數(shù)據(jù)結(jié)構(gòu)間的關(guān)系,對抽象數(shù)據(jù)結(jié)構(gòu)類型的研究有重要的借鑒意義,同時(shí)對數(shù)據(jù)結(jié)構(gòu)的實(shí)際教學(xué)過程有著一定的指導(dǎo)意義。
參考文獻(xiàn)
[1]陸松年.數(shù)據(jù)結(jié)構(gòu)教程[M].北京:科學(xué)出版社.2002年
[2]嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社.1997年
[3]帥訓(xùn)波.數(shù)據(jù)結(jié)構(gòu)間普遍整體聯(lián)系[D].曲阜:曲阜師范大學(xué)計(jì)算機(jī)科學(xué)學(xué)院.2003年
[4]藍(lán)雯飛.數(shù)據(jù)結(jié)構(gòu)的面向?qū)ο竺枋龇椒ㄑ芯縖J].計(jì)算機(jī)工程與應(yīng)用,2006;42(26):79-80
[5]劉毅.關(guān)于Treap數(shù)據(jù)結(jié)構(gòu)問題的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005;22(8):36-38
[6]胡澤明,岳瑞生,王志剛.嵌入式GIS線要素?zé)o縫拼接的數(shù)據(jù)結(jié)及實(shí)現(xiàn)算法[J].測繪科學(xué),2006;31(5):102-103
篇7
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu);算法;軟件設(shè)計(jì)
1.經(jīng)典算法的選擇
選擇經(jīng)典算法的重要性,PASCAL語言的創(chuàng)始人、著名的計(jì)算機(jī)科學(xué)家N.沃思說得好“程序=數(shù)據(jù)結(jié)構(gòu)+算法”,足以見得算法在程序設(shè)計(jì)中的重要地位。在合理的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,算法是對數(shù)據(jù)結(jié)構(gòu)的操作(運(yùn)算),是數(shù)據(jù)處理的核心。在《數(shù)據(jù)結(jié)構(gòu)》中介紹的基本數(shù)據(jù)結(jié)構(gòu)有線性表、堆棧、隊(duì)列、數(shù)組、樹、二叉樹、圖以及相應(yīng)的算法。一個(gè)算法是建立在某種數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,一個(gè)算法不可能脫離數(shù)據(jù)結(jié)構(gòu)而孤立存在。只有通過學(xué)習(xí)算法,才能真正掌握某種數(shù)據(jù)結(jié)構(gòu)。可以說學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》的過程基本上是學(xué)習(xí)各種算法的過程。在眾多的算法中有簡單的、有復(fù)雜的、有容易的、有難度大的,在有限的學(xué)時(shí)情況下,不可能也沒有必要逐一講解每一個(gè)算法。大多數(shù)的算法,要靠學(xué)生自己理解消化。在這種情況下,如何選擇少量的經(jīng)典算法進(jìn)行分析講解,顯得尤其重要。一個(gè)經(jīng)典算法往往能起到以一當(dāng)十、以點(diǎn)帶面的關(guān)鍵作用。通過經(jīng)典算法的分析,一方面讓學(xué)生加深對數(shù)據(jù)結(jié)構(gòu)基本理論的理解另一方面讓學(xué)生學(xué)習(xí)程序設(shè)計(jì)方法。
選擇好經(jīng)典算法后下一步就是要對其展開綜合分析,下面以具體的算法為例進(jìn)行討論。
2.利用經(jīng)典算法說明基本原理
2.1 經(jīng)典算法應(yīng)能體現(xiàn)某個(gè)數(shù)據(jù)結(jié)構(gòu)的基本特征
我們知道線性表順序存儲時(shí)其優(yōu)點(diǎn)是能夠?qū)γ總€(gè)數(shù)據(jù)元素隨機(jī)訪問,存儲密度高,其缺點(diǎn)是插入、刪除操作時(shí)需要移動大量的數(shù)據(jù)元素,操作效率低?!跋蛴行颍ㄓ尚〉酱蠡蛴纱蟮叫。┑木€性表(順序存儲)插入一個(gè)新的數(shù)據(jù)元素”,這一經(jīng)典算法集中反映了線性表順序存儲的這些特點(diǎn)。
分析:將一個(gè)值為X的數(shù)據(jù)元素插入到有序(由小到大或由大到小)的線性表(順序存儲)中,可以分兩步進(jìn)行,首先查找到值為X的數(shù)據(jù)元素在線性表中應(yīng)有的位置,采用從頭到尾循環(huán)比較的方法確定其位置I,然后,將第I個(gè)以后的全部數(shù)據(jù)元素向后移動一個(gè)存儲單元,最后將值為X的數(shù)據(jù)元素存放到第I個(gè)位置上,線性表元素個(gè)數(shù)增1。
【算法1】
PROCEDURE INSERT(V,m,n,X)
//將值為X的數(shù)據(jù)元素插入到V數(shù)組中,(線性表順序存貯在V中)m為最多元素個(gè)數(shù),n為當(dāng)前實(shí)際元素個(gè)數(shù)
IF (m=n) THEN{“OVERFLOW”; RETURN}
FOR I=1 TO n DO
IF (X〈V(I))THEN BREAK
FOR J=n TO I BY -1 DO V(J+1)=V(J)
V(I)=X
n=n+1
RETURN
分析:【算法1】的優(yōu)點(diǎn)是簡單,便于理解,缺點(diǎn)是:
①循環(huán)體內(nèi)有提前退出語句,不利于結(jié)構(gòu)化程序設(shè)計(jì);
②確定新數(shù)據(jù)元素位置和移動數(shù)據(jù)元素分兩步進(jìn)行,有重復(fù)操作,可以改進(jìn)之,將兩步合并一步完成,即將循環(huán)比較與移動數(shù)據(jù)元素同時(shí)進(jìn)行。從線性表的尾部開始向前循環(huán)比較,比新數(shù)據(jù)元素大者后移,直到小于等于時(shí)停止。
【算法2】
PROCEDURE INSERT(V,m,n,X)
IF(m=n)THEN{“OVERFLOW”;RETURN}
I=n
WHILE (I〉=1)AND (V(I)〉X)DO {V(I+1)=V(I);I=I-1}
V(I+1)=X
n=n+1
RETURN
分析:注意【算法2】中循環(huán)條件,當(dāng)循環(huán)結(jié)束后I=0或V(I)〈=X,新數(shù)據(jù)元素的位置為I+1,【算法1】的時(shí)間復(fù)雜度為0(2n),而【算法2】的時(shí)間復(fù)雜度為0(n),效率提高一倍。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中最基本最核心的部分,歸納循環(huán)條件是關(guān)鍵?!舅惴?】能進(jìn)一步推廣。
2.2 利用經(jīng)典算法學(xué)習(xí)算法設(shè)計(jì)
經(jīng)典算法能給學(xué)習(xí)者以啟示、示范作用。
分析:可以將【算法2】用于對線性表(順序存儲)排序算法中。在直接插入排序算法中,其算法思想是從第2個(gè)數(shù)據(jù)元素開始直到第n個(gè)數(shù)據(jù)元素,逐一插入到已有序的子線性表中。
【算法3】
PROCEDURE SORT(V,n)
FOR I=2 TO n DO
{ Y=V(I)
J=I-1
WHILE (J〉=1) AND (V(J)〉Y) DO {V(J+1)=V(J);J=J-1}
V(J+1)=Y }
RETURN
分析:【算示3】其結(jié)構(gòu)分為雙重循環(huán),外循環(huán)完成逐一取數(shù)據(jù)元素,即取第I個(gè)數(shù)據(jù)元素,內(nèi)循環(huán)完成將第I個(gè)數(shù)據(jù)元素插入到前I-1個(gè)已有序的子線性表中。內(nèi)循環(huán)完成的功能可以獨(dú)立成為一個(gè)子函數(shù)(子過程),可以借用【算法2】。這正是結(jié)構(gòu)化程序設(shè)計(jì)思想的體現(xiàn),即主程序完成任務(wù)的劃分,說明“做什么”,子函數(shù)(子過程)完成任務(wù)的具體實(shí)現(xiàn),說明“如何做”。結(jié)構(gòu)化程序設(shè)計(jì)方法采取“分解”的手段來控制系統(tǒng)的復(fù)雜性,將大系統(tǒng)劃分為若干個(gè)相對獨(dú)立的、功能單一的子模塊。一方面子函數(shù)(子過程)可以實(shí)現(xiàn)軟件的重用性,在不同的程序段有相同的處理過程時(shí)調(diào)用子函數(shù)(子過程),減少軟件開發(fā)的工作量;另一方面子函數(shù)(子過程)對具體的實(shí)現(xiàn)技術(shù)細(xì)節(jié)進(jìn)行隱藏,便于開發(fā)人員集中精力把握軟件開發(fā)的核心和主要問題,降低了軟件開發(fā)難度,從而保證軟件質(zhì)量。在利用【算法2】時(shí)要稍加修改,見【算法4】。
【算法4】
PROCEDURE INSERT(V,I,X)
//將值為X的數(shù)據(jù)元素插入到已有序的前I-1個(gè)數(shù)據(jù)元素中
J=I-1
Y=X
WHILE (J〉=1) AND (V(J)〉X) DO {V(J+1)=V(J);J=J-1}
V(J+1)=Y
RETURN
相應(yīng)的主程序也要作修改,見【算法5】
【算法5】
PROCEDURE SORT(V,n)
FOR I=2 TO n DO
INSERT(V,I,V(I))
RETURN
3.結(jié)束語
在眾多的算法中選擇好少量的經(jīng)典算法對于教好、學(xué)好《數(shù)據(jù)結(jié)構(gòu)》至關(guān)重要;經(jīng)典算法要有助于學(xué)生理解對應(yīng)的數(shù)據(jù)結(jié)構(gòu),經(jīng)典算法的分析要側(cè)重于程序設(shè)計(jì)能力的提高。
參考文獻(xiàn)
[1]歐建圣.數(shù)據(jù)結(jié)構(gòu)教學(xué)研究――經(jīng)典算法的綜合分析[J].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,16(1):58-60.
篇8
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);教學(xué)效果;存在問題;改革總結(jié)
一、課程的重要性
《數(shù)據(jù)結(jié)構(gòu)》課程是計(jì)算機(jī)專業(yè)中一門重要的專業(yè)基礎(chǔ)必修課,它為操作系統(tǒng)、數(shù)據(jù)庫原理、編譯原理、單片機(jī)原理等后續(xù)專業(yè)課程的學(xué)習(xí)奠定了基礎(chǔ)。其次,數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)相關(guān)專業(yè)的考研專業(yè)課之一。該課程的重要性顯而易見。
二、教學(xué)中存在的問題
《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)目標(biāo)是全面系統(tǒng)地介紹數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法實(shí)現(xiàn),并介紹常用的非數(shù)值計(jì)算方法,如數(shù)據(jù)插入、刪除、排序、查找檢索等,使學(xué)生掌握各種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)和算法思想,并能結(jié)合具體應(yīng)用,運(yùn)用各種數(shù)據(jù)結(jié)構(gòu)和算法解決實(shí)際問題。但大部分高?!稊?shù)據(jù)結(jié)構(gòu)》課程的教學(xué)效果都不盡如人意,影響課程學(xué)致有如下原因:
1.程序設(shè)計(jì)課程掌握較差,基礎(chǔ)薄弱。
2.實(shí)踐機(jī)會少,動手能力差。
3.缺乏課外輔導(dǎo),學(xué)生自學(xué)時(shí)障礙重重。
三、解決方法
鑒于以上幾點(diǎn),可以從這幾方面進(jìn)行教學(xué)改革:
1.加大對先行課程的重視程度。首先加大C程序設(shè)計(jì)課程的課時(shí)。C程序設(shè)計(jì)課程是數(shù)據(jù)結(jié)構(gòu)課程的直接先行課,因此,學(xué)好C語言,為后續(xù)若干課程的學(xué)習(xí)打好堅(jiān)實(shí)的基礎(chǔ)。另外,增加數(shù)學(xué)及線性代數(shù)課程的課時(shí)。學(xué)習(xí)算法離不開數(shù)學(xué)的思想,學(xué)習(xí)數(shù)組的存儲結(jié)構(gòu)也離不開線性代數(shù)的應(yīng)用。最后,增加了32課時(shí)的C程序設(shè)計(jì)課程設(shè)計(jì)。
2.實(shí)際操作方面,計(jì)算機(jī)專業(yè)要求有很高的實(shí)際操作技能,而我們的學(xué)生在長期被動的學(xué)習(xí)過程中卻養(yǎng)成了勤于動腦,懶于動手的學(xué)習(xí)特點(diǎn),這樣教出的學(xué)生卻是不能滿足實(shí)際工作要求的。因此,數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué)要緊密配合理論教學(xué),通過相關(guān)實(shí)驗(yàn)與課程設(shè)計(jì),幫助和加深對數(shù)據(jù)結(jié)構(gòu)的整體理解,所以在本課程結(jié)束前安排兩周實(shí)踐進(jìn)行課程設(shè)計(jì),不要求實(shí)現(xiàn)過多的項(xiàng)目,但每個(gè)學(xué)生都要動手去做,親身經(jīng)歷從需求分析到算法分析,最后的代碼編寫與調(diào)試這樣的過程,從而更深刻的理解數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)以及在某種具體的存儲結(jié)構(gòu)下的運(yùn)算及其實(shí)現(xiàn)方法。
3.構(gòu)建《數(shù)據(jù)結(jié)構(gòu)》網(wǎng)絡(luò)視頻課程,加強(qiáng)師生互動環(huán)節(jié)。為了彌補(bǔ)課外輔導(dǎo)的缺陷,制作與《數(shù)據(jù)結(jié)構(gòu)》課程內(nèi)容相適應(yīng)的視頻,尤其是該課程中典型的算法及其實(shí)現(xiàn)過程,學(xué)生在課外學(xué)習(xí)時(shí)遇到問題可隨時(shí)登錄校園網(wǎng)觀看視頻,進(jìn)行查漏補(bǔ)缺,達(dá)到鞏固知識的效果。另外,在網(wǎng)站上可以設(shè)置在線答疑或留言功能,從而實(shí)現(xiàn)師生互動。
四、改革成果
根據(jù)以上改革方法,經(jīng)過實(shí)施,數(shù)據(jù)結(jié)構(gòu)課程教學(xué)效果頗見成效,簡單做以總結(jié):
1.加大C語言程序設(shè)計(jì)課程的課時(shí),教師能夠在足夠的課堂時(shí)間將課程內(nèi)容系統(tǒng)化的進(jìn)行講解,尤其是數(shù)組、指針、結(jié)構(gòu)體等重要知識。從而給數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí)打下了夯實(shí)的基礎(chǔ)。
2.網(wǎng)絡(luò)視頻的構(gòu)建,給學(xué)生提供了更為豐富的學(xué)習(xí)參考資料。學(xué)生在課外復(fù)習(xí)時(shí)遇到不理解的算法,隨時(shí)登錄校園網(wǎng)觀看視頻,好像再一次回到了課堂,從而解決了疑難問題。另外,校園網(wǎng)上開通了該課程的在線答疑功能,學(xué)生可以通過在線答疑功能隨時(shí)和任課教師進(jìn)行溝通。
3.加強(qiáng)數(shù)據(jù)結(jié)構(gòu)課內(nèi)實(shí)踐與課程設(shè)計(jì)的實(shí)施,學(xué)生可以將課堂上的理論知識應(yīng)用于實(shí)踐中。尤其是課程設(shè)計(jì)的開設(shè),如:簡單文本編輯器的設(shè)計(jì)與實(shí)現(xiàn)、科學(xué)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)等,通過案例讓學(xué)生真正體會到數(shù)據(jù)結(jié)構(gòu)課程的實(shí)用性,并從本質(zhì)上理解該課程的內(nèi)容。
五、結(jié)束語
《數(shù)據(jù)結(jié)構(gòu)》不僅是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的專業(yè)基礎(chǔ)課,也是大多數(shù)院校研究生入學(xué)考試的專業(yè)必考課,因此,《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)的討論將會持續(xù)下去,最終能找到一條行之有效的教學(xué)方法。以上是作者結(jié)合自己多年教學(xué)經(jīng)驗(yàn)和體會,提出的若干改革方法,不足之處會繼續(xù)探討研究。
參考文獻(xiàn):
[1]李春葆.數(shù)據(jù)結(jié)構(gòu)(C語言)[M].北京:清華大學(xué)出版社,2013
[2]嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)(C語言)[M].北京:清華大學(xué)出版社,2011
篇9
關(guān)鍵詞 數(shù)據(jù)結(jié)構(gòu)課程;MOOC教學(xué)模式;教學(xué)設(shè)計(jì)
中圖分類號:G642.3 文獻(xiàn)標(biāo)識碼:B
文章編號:1671-489X(2017)01-0037-03
1 引言
隨著互聯(lián)網(wǎng)時(shí)代的到來,涌現(xiàn)出來一種大規(guī)模開放在線課程(MOOC)教育模式。那么什么是MOOC呢?MOOC一詞是由加拿大學(xué)者Dave Cormier和Bryan Alexander提出的[1]。MOOC(Massive Open Online Course)是指大規(guī)模的免費(fèi)網(wǎng)絡(luò)開放課程。參與MOOC學(xué)習(xí)的人數(shù)規(guī)模龐大,全球各地的參與者都可以免費(fèi)注冊使用MOOC,參與信息提供、評價(jià)過程[2]。MOOC的核心是教學(xué)設(shè)計(jì)的改變以及參與者的互動性。
2012年,MOOC在美取得空前成功,Coursera、edX、
Udacity三大課程提供商的興起,給更多學(xué)生提供了系統(tǒng)學(xué)習(xí)的可能[3]。國內(nèi)的知名大學(xué)如北京大學(xué)、清華大學(xué)、浙江大學(xué)等紛紛MOOC課程。MOOC的到來為高等教育帶來新的機(jī)遇,可以促進(jìn)優(yōu)質(zhì)教育資源共享和教育公平[4]。
高等教育的傳統(tǒng)教學(xué)方式作為主流的教學(xué)模式[5-8]不會被替代,但MOOC將導(dǎo)致現(xiàn)有教學(xué)體系的全面革新,幾千年來低效率的課堂教學(xué)將在今后若干年內(nèi)有根本性的改變[9]。
在MOOC框架下如何利用一些新技術(shù)和新手段提高課程的教學(xué)質(zhì)量?數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)相關(guān)專業(yè)的核心專業(yè)課程,是一門實(shí)用性很強(qiáng)又抽象程度比較高的課程,課程內(nèi)容抽象、復(fù)雜,涉及很多概念和算法技術(shù),學(xué)習(xí)起來較困難。長期以來,傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)課程通過以教師為主體、學(xué)生被動學(xué)習(xí)的模式開展教學(xué),使得學(xué)生的學(xué)習(xí)困難增加,學(xué)習(xí)興趣得不到激發(fā),教學(xué)效果并不理想。本文通過探討數(shù)據(jù)結(jié)構(gòu)課程的MOOC教學(xué)模式,希望通過MOOC提供給學(xué)生一種與傳統(tǒng)課堂教學(xué)和網(wǎng)絡(luò)公開課不同的學(xué)習(xí)渠道,激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生探索知識,更好地掌握數(shù)據(jù)結(jié)構(gòu)這門課程。
2 傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)存在的問題
通過長期的數(shù)據(jù)結(jié)構(gòu)一線崗位的實(shí)踐摸索和對學(xué)生學(xué)習(xí)情況的調(diào)查分析,總結(jié)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)過程中主要存在的幾點(diǎn)問題。
學(xué)生學(xué)習(xí)難度大,學(xué)習(xí)興趣低 數(shù)據(jù)結(jié)構(gòu)課程主要是培養(yǎng)學(xué)生分析解決問題能力,但由于該課程抽象程度高,對學(xué)生的抽象思維和邏輯思維能力要求較高,學(xué)生學(xué)習(xí)起來難度較大。如果教學(xué)過程中運(yùn)用生動形象的教學(xué)方法,讓學(xué)生自發(fā)參與學(xué)習(xí),不僅教師能夠取得較好的教學(xué)效果,提高教學(xué)質(zhì)量,學(xué)生也不再是為了考試而死記硬背知識點(diǎn),而是能真正把所學(xué)的知識點(diǎn)與實(shí)際應(yīng)用相結(jié)合
傳統(tǒng)教學(xué)模式不能滿足教學(xué)需求 一直以來,數(shù)據(jù)結(jié)構(gòu)課程的傳統(tǒng)教學(xué)模式都是把教師作為主體,用講授式的教學(xué)方法把相關(guān)知識點(diǎn)大量傳輸給學(xué)生。然而數(shù)據(jù)結(jié)構(gòu)課程涉及繁多的概念和算法,傳統(tǒng)的教學(xué)模式顯然已不能滿足這門邏輯思維能力要求很高的課程,否則教學(xué)目的、教學(xué)效果都會和預(yù)期相差甚大。另外,傳統(tǒng)的教學(xué)方式主要是運(yùn)用黑板和PPT,但PPT很多時(shí)候只是代替黑板和粉筆,演示數(shù)據(jù)結(jié)構(gòu)的算法得到改進(jìn),直觀性更強(qiáng),而學(xué)生對數(shù)據(jù)之間的繁雜關(guān)系還是很難想象。并且信息量更大后,難以一直吸引學(xué)生的注意力,互動及延續(xù)性不能得到很好的改進(jìn),教學(xué)效果也受到很大影響。
3 數(shù)據(jù)結(jié)構(gòu)課程MOOC教學(xué)模式設(shè)計(jì)
數(shù)據(jù)結(jié)構(gòu)課程MOOC制作流程 在進(jìn)行MOOC課程規(guī)劃設(shè)計(jì)時(shí),要充分了解MOOC教學(xué)模式的特點(diǎn),以期能夠有針對性地對課題進(jìn)行規(guī)劃。數(shù)據(jù)結(jié)構(gòu)課程的MOOC制作流程如圖1所示。
MOOC課程制作要想做得引人入勝,容易學(xué)習(xí)消化,需要專業(yè)技術(shù)團(tuán)隊(duì)的配合,經(jīng)過專業(yè)技術(shù)團(tuán)隊(duì)的錄制和后期制作,內(nèi)容質(zhì)量和視覺風(fēng)格都會得到很好的提升,使得課程脫穎而出,取得理想的傳播影響力。
數(shù)據(jù)結(jié)構(gòu)課程的MOOC教學(xué)內(nèi)容必須合理碎片化 傳統(tǒng)教學(xué)是教師把學(xué)生召集到指定教室一起學(xué)習(xí),這種強(qiáng)有力的組織性形成外在驅(qū)動力。在這個(gè)驅(qū)動力下,學(xué)生雖然學(xué)習(xí)動力低,也會從枯燥的教學(xué)內(nèi)容和呆板的教學(xué)方式中學(xué)到部分知識點(diǎn)。另外,傳統(tǒng)教學(xué)的教學(xué)對象是年齡相仿、教育基礎(chǔ)相仿的學(xué)生,教師的教學(xué)內(nèi)容容易組織準(zhǔn)備。然而,MOOC的學(xué)習(xí)對象有不同學(xué)習(xí)目的,來自不同的地方,有著不同的年齡,教育基礎(chǔ)也不相同,因此,MOOC教學(xué)模式與傳統(tǒng)教學(xué)模式相比,挑戰(zhàn)性更大。開展MOOC教學(xué)模式要想增加吸引力,教師要在自己的課程內(nèi)容設(shè)計(jì)上下功夫,增強(qiáng)吸引力,推動學(xué)生向前走。
在數(shù)據(jù)結(jié)構(gòu)傳統(tǒng)50分鐘課堂上,一般教師會講授至少30分鐘抽象復(fù)雜的知識點(diǎn)。各種心理學(xué)研究顯示,人類的注意力最有效的集中時(shí)間段是6~10分鐘,超過這段時(shí)間就會下降,接受信息的能力也會隨之降低,因此,信息獲取的趨勢必須是碎片化,如此才能被人類更好地接收。MOOC課程教學(xué)設(shè)計(jì)的一個(gè)重要內(nèi)容就是把系統(tǒng)化的知識轉(zhuǎn)化為碎片化的信息。在數(shù)據(jù)結(jié)構(gòu)的MOOC教學(xué)設(shè)計(jì)中要把傳統(tǒng)課堂50分鐘教學(xué)內(nèi)容,切分為多個(gè)10分鐘的小視頻,把整個(gè)課程精確地切分轉(zhuǎn)化成多個(gè)獨(dú)立的小視頻講授。這樣不同學(xué)習(xí)目標(biāo)的學(xué)生可以選擇需要的小視頻學(xué)習(xí),每個(gè)學(xué)生還可以根據(jù)自己的業(yè)余時(shí)間隨時(shí)隨地學(xué)習(xí),在注意力最集中的時(shí)間里學(xué)到相關(guān)知識點(diǎn)。
碎片的內(nèi)容要緊扣主題,切割碎片時(shí),內(nèi)容不可以太長。比如堆排序,如果切割成一個(gè)視頻,必然要至少20分鐘,就要把內(nèi)容進(jìn)一步碎化,但又要使切割后的內(nèi)容各成一主題。因此,如何使得內(nèi)容切割的碎片更合理,使得邏輯組織更清晰,需要在PPT制作部分就考慮這個(gè)問題。
數(shù)據(jù)結(jié)構(gòu)課程MOOC教學(xué)小視頻制作要有吸引力和實(shí)效 視線引導(dǎo)是吸引學(xué)生注意力的一種方式。在傳統(tǒng)課堂上,學(xué)生的視線跟隨教師多樣的肢體語言和教鞭等教學(xué)工具的指引發(fā)生變化,視線也會跟著講臺上教師位置的移動發(fā)生變化,增強(qiáng)了對學(xué)生的吸引力,讓學(xué)生的思路跟隨教師的節(jié)奏。在MOOC小視頻制作中,可以通過講授者的動作、動畫播放、PPT放映中文字或者圖片的層次進(jìn)入以及視頻編輯軟件提供的高亮、筆畫等功能達(dá)到同樣的效果。至于講授者和課件是穿插出現(xiàn)的,出現(xiàn)的比例、頻率到底應(yīng)該多少為宜,并沒有具體的標(biāo)準(zhǔn),關(guān)鍵是保持屏幕上要盡量變化,并且變而不亂、引人入勝。像靜止的畫面,或者充滿文字的畫面,在視頻中不能持續(xù)較長時(shí)間。
思路引導(dǎo)較視線引導(dǎo)更為重要。課件設(shè)計(jì)風(fēng)格應(yīng)該是簡單的,對所有課件中動畫的設(shè)計(jì),原則上是對思考過程的展示,所有無助于此的元素都不必出現(xiàn)。例如:在展示一個(gè)復(fù)雜算法的偽代碼時(shí),并不是一次性將全部偽代碼放映出來,再逐行講解其功能――這是計(jì)算機(jī)執(zhí)行的過程,并不是人類思考的過程;應(yīng)從整體思路入手,先根據(jù)算法流程展示出代碼框架,再逐步演示框架內(nèi)各個(gè)模塊的細(xì)化過程,必要時(shí)輔以實(shí)例的動畫演示。
數(shù)據(jù)結(jié)構(gòu)課程MOOC教學(xué)模式的互動性 傳統(tǒng)課堂上教師習(xí)慣于通過提問、設(shè)問的方式進(jìn)行互動,在MOOC教學(xué)過程中可以通過在視頻炔迦胩崳?、灾o悠導(dǎo)湎恫迦氬庋櫚姆絞澆行師生互動,有助于增強(qiáng)教學(xué)效果。
在MOOC視頻內(nèi)插入提問,等同于傳統(tǒng)課堂上教師提出一個(gè)簡單問題,用來吸引學(xué)生的注意力,避免學(xué)生的思維懈怠。在傳統(tǒng)課堂上,教師提出問題后,懈怠的學(xué)生可能不會思考,只是等其他學(xué)生的回答。但在MOOC教學(xué)過程中,看視頻的所有學(xué)生必須對插入的問題做出思考及回答,才能繼續(xù)觀看視頻。
在MOOC視頻之間插入測驗(yàn),是在一個(gè)小視頻播放結(jié)束后,插入前一段小視頻的相關(guān)測驗(yàn),學(xué)生給出回答結(jié)果,MOOC系統(tǒng)會自動判題,立即給出測驗(yàn)結(jié)果。這樣學(xué)生盡快發(fā)現(xiàn)問題,掌握自己對知識點(diǎn)的理解程度,對于不明白的還可以再次觀看前一段視頻。然而傳統(tǒng)課堂測驗(yàn)會對教學(xué)進(jìn)度造成影響,而且教師課后批改測驗(yàn)的工作量會增加,學(xué)生存在的問題也不能及時(shí)反饋。因此,在師生互動方面,MOOC比傳統(tǒng)課堂的互動效果要更好。
MOOC的互動性優(yōu)點(diǎn),除了師生互動,還有生生互動。學(xué)生提交的作業(yè)是需要交流和分享的,并且還有學(xué)生的互評,這是MOOC的一個(gè)創(chuàng)新。通過互相之間的分享、觀摩,可以提高學(xué)生的學(xué)習(xí)積極性,端正學(xué)習(xí)態(tài)度,這是傳統(tǒng)的教學(xué)互動層次做不到的。
4 總結(jié)
數(shù)據(jù)結(jié)構(gòu)課程重在培養(yǎng)學(xué)生的實(shí)踐能力,在教學(xué)過程中希望通過教學(xué)手段如互動式學(xué)習(xí)等方式來激發(fā)學(xué)生的學(xué)習(xí)動力。在設(shè)計(jì)和實(shí)施數(shù)據(jù)結(jié)構(gòu)課程MOOC教學(xué)時(shí),重點(diǎn)要考慮如何組織教學(xué)內(nèi)容,使得碎片化后的內(nèi)容組織更合理,以滿足不同對象的學(xué)習(xí)需求,以及如何制作更有吸引力的視頻、動畫或數(shù)字特效等,能突出算法的設(shè)計(jì)、清晰問題的求解思路以及不同方法之間的特點(diǎn)。
參考文獻(xiàn)
[1]王文禮.MOOC的發(fā)展及其對高等教育的影響[J].江蘇高教,2013(2):53-57.
[2]楊丹.MOOC(慕課)初探[J].教育教學(xué)論壇,2014(12):
105-106.
[3]張銘,奚春燕,彭遠(yuǎn)紅.微課:唱響中國MOOC的前奏[J].計(jì)算機(jī)教育,2013(20):11-13.
[4]蘇小紅,趙玲玲,張彥航,等.MOOC浪潮下,我們該做些什么[J].計(jì)算機(jī)教育,2015(7):64-68.
[5]邢立峰,邢立群,張曉燕.翻轉(zhuǎn)課堂模式在計(jì)算機(jī)基礎(chǔ)課程中的應(yīng)用研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(24):
231-232.
[6]劉華敏.“翻轉(zhuǎn)課堂”教學(xué)模式的探討:以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例[J].廣東技術(shù)師范學(xué)院學(xué)報(bào),2016(5):70-72.
[7]張小剛.CDIO理念下的“數(shù)據(jù)結(jié)構(gòu)”課程實(shí)踐教學(xué)改進(jìn)探索[J].赤峰學(xué)院學(xué)報(bào):自然科學(xué)版,2016(10)20-21.
篇10
【中圖分類號】G642 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2014)04-0147-01
1.引言
隨著計(jì)算機(jī)處理數(shù)據(jù)量的劇增,數(shù)據(jù)之間的關(guān)系也越來越復(fù)雜?!皵?shù)據(jù)結(jié)構(gòu)”的前期基礎(chǔ)課程有高等數(shù)學(xué)、離散數(shù)學(xué)和C語言程序設(shè)計(jì)等課程;同時(shí)又是專業(yè)課程操作系統(tǒng)、數(shù)據(jù)庫原理、圖像處理等課程的基礎(chǔ),具有承上啟下的作用。由于該門課程實(shí)驗(yàn)性很強(qiáng),內(nèi)容抽象不易理解,所以近年來圍繞如何上好該門課程,學(xué)校實(shí)施了一系列的課程改革,培養(yǎng)學(xué)生運(yùn)用各種算法編寫程序的能力,并初步取得了不錯(cuò)的效果。
實(shí)驗(yàn)課程是理論課程的檢驗(yàn)者和發(fā)揮者,通過實(shí)驗(yàn),學(xué)生不僅可以驗(yàn)證一些理論知識的正確性,同時(shí)還可以通過靈活多樣性的實(shí)驗(yàn)題目提高上機(jī)編程能力,進(jìn)一步提高軟件設(shè)計(jì)能力、提高學(xué)習(xí)的積極性和能動性,并逐漸形成科學(xué)的思維方法和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。
2.“數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)教學(xué)的措施
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課程的改革是以課堂教學(xué)為基礎(chǔ),以實(shí)驗(yàn)課為中心,以學(xué)生為主體的模式,重在培養(yǎng)學(xué)生獨(dú)立自主、創(chuàng)新動手能力,因此實(shí)驗(yàn)課之前的準(zhǔn)備工作很重要。實(shí)驗(yàn)課程改革實(shí)施過程主要有以下幾個(gè)方面構(gòu)成:
2.1 修訂實(shí)驗(yàn)大綱和實(shí)驗(yàn)指導(dǎo)書
進(jìn)行實(shí)驗(yàn)教學(xué)改革,首先對原來的實(shí)驗(yàn)大綱和實(shí)驗(yàn)指導(dǎo)書進(jìn)行重新修訂,應(yīng)該遵循培養(yǎng)學(xué)生實(shí)際動手能力的的特點(diǎn),體現(xiàn)以理論為基礎(chǔ),以實(shí)驗(yàn)為檢驗(yàn)手段的學(xué)科特色。通過實(shí)驗(yàn)課程的教學(xué),讓學(xué)生明白理論課程中的哪些內(nèi)容是基礎(chǔ)點(diǎn),哪些內(nèi)容是難點(diǎn)和重點(diǎn),并讓學(xué)生有針對性的進(jìn)行實(shí)驗(yàn)鍛煉。在2011年的數(shù)據(jù)結(jié)構(gòu)理論和實(shí)驗(yàn)教學(xué)中,課題組成員老師按照理論教學(xué)大綱,幾次討論研究,從而形成了新的實(shí)驗(yàn)大綱和實(shí)驗(yàn)指導(dǎo)書。2011年新的實(shí)驗(yàn)大綱和實(shí)驗(yàn)指導(dǎo)書開始實(shí)施,效果比較良好。
2.2 合理設(shè)計(jì)實(shí)驗(yàn)題目
對于實(shí)驗(yàn)題目,按照內(nèi)容和難易程度共分為三個(gè)層次,即驗(yàn)證型、綜合型和設(shè)計(jì)型題目。按照循序漸進(jìn)的順序進(jìn)行,最開始的幾個(gè)題目由于理論知識講授較少,讓學(xué)生做的是驗(yàn)證型的題目;隨著所學(xué)知識的增加,開始讓學(xué)生解決綜合性的實(shí)驗(yàn)題目,這部分題目需要學(xué)生融會貫通前后的知識點(diǎn)才可以完成;最后,在課程的收尾階段,為了檢驗(yàn)學(xué)生掌握該門課程的情況,老師提出實(shí)驗(yàn)?zāi)康暮鸵?,學(xué)生自行設(shè)計(jì),完成實(shí)驗(yàn)內(nèi)容。設(shè)計(jì)型的題目一般安排在課后進(jìn)行,學(xué)生可以根據(jù)要求去圖書館查閱資料,不僅豐富了學(xué)生的第二課堂,而且大大培養(yǎng)了學(xué)生動手解決實(shí)際問題的能力。
實(shí)驗(yàn)內(nèi)容上去掉了部分抽象性比較強(qiáng)的題目,增加了幾個(gè)競賽內(nèi)容題目。這部分內(nèi)容的增加不僅提高了學(xué)生的興趣,并為以后參加程序設(shè)計(jì)大賽打下了堅(jiān)實(shí)的基礎(chǔ)。
2.3 內(nèi)容講解和上機(jī)實(shí)驗(yàn)
實(shí)驗(yàn)課一般先安排老師進(jìn)行實(shí)驗(yàn)理論知識的大致介紹和實(shí)驗(yàn)內(nèi)容的詳細(xì)講解,時(shí)間大致掌握在二十分鐘左右,剩下時(shí)間是學(xué)生進(jìn)行驗(yàn)證和自行編程時(shí)間。在這個(gè)時(shí)間如果個(gè)別學(xué)生有疑問,實(shí)驗(yàn)老師可以進(jìn)行有針對性的講解,同時(shí)逐步引導(dǎo)學(xué)生排除錯(cuò)誤。另一方面,學(xué)生在老師講解完畢后要對實(shí)驗(yàn)內(nèi)容進(jìn)行全面分析,對驗(yàn)證型實(shí)驗(yàn)內(nèi)容要在實(shí)驗(yàn)完畢后鞏固所學(xué)理論知識;對于綜合型實(shí)驗(yàn)內(nèi)容要聯(lián)系各個(gè)知識環(huán)節(jié),綜合解決復(fù)雜問題。
為了及時(shí)解答學(xué)生在做實(shí)驗(yàn)中遇到的問題,教師可以不時(shí)在學(xué)生中巡回一下,以便幫助學(xué)生排憂解難,確保學(xué)生的問題可以及時(shí)有效的解決。另外,在實(shí)驗(yàn)結(jié)束后必須要撰寫實(shí)驗(yàn)報(bào)告,提交實(shí)驗(yàn)結(jié)果。
2.4 內(nèi)容考核
為了驗(yàn)證學(xué)生掌握實(shí)驗(yàn)的情況,必須進(jìn)行實(shí)驗(yàn)課程考核。按照數(shù)據(jù)結(jié)構(gòu)大綱要求,平時(shí)成績、實(shí)驗(yàn)成績和理論課程考試比例為1:4:5。同時(shí)針對實(shí)驗(yàn)成績,又分為平時(shí)成績占30%,實(shí)驗(yàn)考核成績占70%,這樣可以有效的避免學(xué)生最后單憑考試成績一錘定音的情況。
對完成的實(shí)驗(yàn)內(nèi)容進(jìn)行驗(yàn)收時(shí),盡量做到公平、公正。可以分為多個(gè)考核指標(biāo),分別進(jìn)行實(shí)物驗(yàn)收和答辯情況打分。老師根據(jù)每個(gè)同學(xué)的演示、匯報(bào)、提問回答情況給出一個(gè)綜合成績,再結(jié)合該同學(xué)平時(shí)的實(shí)驗(yàn)課表現(xiàn)情況,給出一個(gè)綜合的實(shí)驗(yàn)成績。
3.實(shí)施效果
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課程改革,從修訂實(shí)驗(yàn)大綱到制定合適的實(shí)驗(yàn)題目,最后到考核環(huán)節(jié),每一階段都是以提高學(xué)生的學(xué)習(xí)興趣、加強(qiáng)學(xué)生的掌握力度和培養(yǎng)學(xué)生的實(shí)際能力為主要導(dǎo)向。實(shí)驗(yàn)課程的改革在這實(shí)施的兩年中,根據(jù)觀察和實(shí)驗(yàn)考核情況,有效提高了學(xué)生遇到問題、分析問題和解決問題的能力。
經(jīng)過實(shí)驗(yàn)教學(xué)的改革和實(shí)踐,我們?nèi)〉昧嗣黠@效果,在2012年的廣西大學(xué)生程序設(shè)計(jì)競賽中,學(xué)院選派的代表對,分別取得了一、二、三等獎的好成績。實(shí)踐證明,通過實(shí)驗(yàn)課程的改革,學(xué)生的編程能力有了明顯提高,為日后工作打下良好基礎(chǔ)。
4.結(jié)束語
從進(jìn)行數(shù)據(jù)結(jié)構(gòu)課程改革以來,我們一直致力于這門課程的建設(shè),從修訂大綱、選用教材、師資隊(duì)伍、課程教學(xué)、實(shí)驗(yàn)教學(xué)等各個(gè)環(huán)節(jié)進(jìn)行了不斷的探索和實(shí)踐。在這2年多的實(shí)踐教學(xué)中,取得了比較滿意的教學(xué)效果。通過課程實(shí)踐,學(xué)生不僅深入理解了數(shù)據(jù)結(jié)構(gòu)的基本原理和基礎(chǔ)知識。同時(shí),學(xué)生普遍感覺自己的動手能力得到提高,遇到問題、分析問題和解決問題的能力得到了鍛煉。
參考文獻(xiàn):
[1]嚴(yán)蔚敏. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:清華大學(xué)出版社,2001
[2]汪沁. 基于“數(shù)據(jù)結(jié)構(gòu)”實(shí)驗(yàn)的探討和研究[J]. 中國教育信息化,2007.(1):17-19
[3]徐大華. 程序設(shè)計(jì)語言教學(xué)方法探討[J]. 高等理科教育,2007(1):36-38
熱門標(biāo)簽
數(shù)據(jù)分析論文 數(shù)據(jù)挖掘論文 數(shù)據(jù)安全論文 數(shù)據(jù)管理論文 數(shù)據(jù)庫論文 數(shù)據(jù)誤差 數(shù)據(jù)挖掘總結(jié) 數(shù)據(jù)采集 數(shù)據(jù)管理 數(shù)據(jù)統(tǒng)計(jì) 心理培訓(xùn) 人文科學(xué)概論
相關(guān)文章
1政務(wù)數(shù)據(jù)協(xié)同治理的分析
3建筑業(yè)統(tǒng)計(jì)數(shù)據(jù)質(zhì)量探討