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