- 相關(guān)推薦
數(shù)據(jù)結(jié)構(gòu)課程難點講授方法與必備知識
數(shù)據(jù)結(jié)構(gòu)課程難點講授方法與必備知識
陳燕,屈莉莉,李桃迎
。ù筮B海事大學(xué),遼寧大連116026)
摘要:數(shù)據(jù)結(jié)構(gòu)是計算機(jī)等相關(guān)專業(yè)重要的專業(yè)基礎(chǔ)課,各大高校都十分重視該課程的教學(xué)效果。捋順數(shù)據(jù)結(jié)構(gòu)的先修后繼課程,構(gòu)建該課程的知識體系結(jié)構(gòu),凝練線性與非線性兩大分類知識點,有助于形成該課程的系統(tǒng)化教學(xué)體系。將理論學(xué)習(xí)與工程實踐的緊密結(jié)合作為講授課程的側(cè)重點,提高學(xué)生解決實際問題的能力。注重培養(yǎng)學(xué)生閱讀和編制程序的技能,將是突破課程難點的重要方法。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);知識點;課程體系;程序設(shè)計
項目資助:2014年遼寧省普通高等學(xué)校本科創(chuàng)新人才培養(yǎng)機(jī)制項目(UPRPI2014034);教育教學(xué)改革研究項目(UPRP20140605)作者簡介:陳燕(1952-),女(漢族),遼寧大連人,教授,博導(dǎo),信息管理與信息系統(tǒng)專業(yè)。
一、引言
《數(shù)據(jù)結(jié)構(gòu)》一直被認(rèn)為是計算機(jī)、信息管理與信息系統(tǒng)、電子商務(wù)等專業(yè)重要的基礎(chǔ)課程之一。該課程的知識涉及到多學(xué)科與多專業(yè),掌握該課程將對學(xué)生后續(xù)課程的學(xué)習(xí)起到重要的知識鏈接作用。數(shù)據(jù)結(jié)構(gòu)課程的主要知識點包括:①線性表的順序存儲結(jié)構(gòu)與鏈?zhǔn)酱鎯Y(jié)構(gòu)及對應(yīng)算法;②棧的順序存儲與鏈?zhǔn)浇Y(jié)構(gòu)及對應(yīng)算法;③隊列的順序存儲與鏈?zhǔn)浇Y(jié)構(gòu)及對應(yīng)算法;④串的順序與鏈?zhǔn)酱鎯Y(jié)構(gòu)及對應(yīng)算法;⑤數(shù)組和廣義表的存儲結(jié)構(gòu)及對應(yīng)算法;⑥樹和二叉樹的順序與鏈?zhǔn)酱鎯Y(jié)構(gòu)及對應(yīng)算法;⑦查找方法;⑧排序方法等。為學(xué)好這門課程,必須依據(jù)課程體系,明確數(shù)據(jù)結(jié)構(gòu)課程中的概念與術(shù)語,靈活運用這些知識點,以達(dá)到扎實掌握該課程難點的目的。
二、數(shù)據(jù)結(jié)構(gòu)的先修后繼課程及知識體系結(jié)構(gòu)
1.掌握數(shù)據(jù)結(jié)構(gòu)課程的先修與后繼課程。以信息管理與信息系統(tǒng)專業(yè)課程體系為例,清晰了解和掌握與數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的先修與后繼課程(如圖1所示)。
先修課程主要有:計算機(jī)信息處理概論、匯編語言程序設(shè)計、高級語言程序設(shè)計(C、C++、Java等)、計算機(jī)組成原理、離散數(shù)學(xué)、運籌學(xué)、圖論等。后續(xù)課程主要有:數(shù)據(jù)庫原理、信息系統(tǒng)開發(fā)方法、編譯原理、信息檢索、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、操作系統(tǒng)、信息集成技術(shù)及應(yīng)用、電子商務(wù)與物流信息管理、大數(shù)據(jù)分析等相關(guān)課程。
2.數(shù)據(jù)結(jié)構(gòu)課程實施框架體系的創(chuàng)新模式。圍繞如下頁圖2所示的數(shù)據(jù)結(jié)構(gòu)課程實施框架體系的創(chuàng)新模式講授數(shù)據(jù)結(jié)構(gòu)課程。明確數(shù)據(jù)結(jié)構(gòu)課程的知識體系和主要知識點。該模式的優(yōu)勢在于:能夠使學(xué)生快速掌握數(shù)據(jù)結(jié)構(gòu)的概念、術(shù)語,客觀世界問題對應(yīng)在計算機(jī)外部的表示方式,在計算機(jī)內(nèi)部的存儲方式,以及如何對它們進(jìn)行操作(運算);除此之外,還能夠嚴(yán)格按照數(shù)據(jù)結(jié)構(gòu)課程的各個知識點進(jìn)行梳理,清楚地歸納出數(shù)據(jù)結(jié)構(gòu)與其他相關(guān)課程的關(guān)聯(lián)關(guān)系。
三、運用歸納總結(jié)方法對數(shù)據(jù)結(jié)構(gòu)課程的知識點進(jìn)行分類
以嚴(yán)蔚敏教授出版的數(shù)據(jù)結(jié)構(gòu)經(jīng)典教材為例,將數(shù)據(jù)結(jié)構(gòu)的知識點進(jìn)行分類:第一類將第二章“線性表”、第三章“棧與隊列”、第四章“串”、第五章“廣義表”劃分為數(shù)據(jù)的線性結(jié)構(gòu)部分;第二類將第六章“樹與二叉樹”、第七章“圖”劃分為數(shù)據(jù)的非線性結(jié)構(gòu)部分。
將自然界的線性問題對應(yīng)的數(shù)據(jù)結(jié)構(gòu)實例例舉出來,形成數(shù)據(jù)結(jié)構(gòu)問題的感性和直觀的認(rèn)識;然后再由淺入深地掌握其相關(guān)的知識點。例如:①為使管理人員快速找到客戶相關(guān)信息,用計算機(jī)處理該業(yè)務(wù)應(yīng)首先確定所使用的數(shù)據(jù)結(jié)構(gòu)形式,如果希望將電話號碼作為關(guān)鍵字,姓名的拼音作為次關(guān)鍵字,那么,會容易地查找出“陳”性拼音順序排在“周”性之前的線性關(guān)系。②到銀行辦理業(yè)務(wù)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)形式是隊列模式,即滿足“先來先服務(wù),后來后服務(wù)”的服務(wù)規(guī)律。③對字符串進(jìn)行存儲與處理時,其存儲結(jié)構(gòu)具有緊湊和非緊湊形式,因此需按照形式的不同,進(jìn)行分類處理后,再對其進(jìn)行操作(如:插入、刪除、查找、模式串匹配等)。④到圖書館借書時,圖書管理員檢索的模式與圖書的存放形式有關(guān)。
與線性結(jié)構(gòu)相比,非線性結(jié)構(gòu)要復(fù)雜得多,即線性表的數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)元素的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間存在一一對應(yīng)的順序關(guān)系;而非線性的數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)元素的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間不存在一一對應(yīng)的順序關(guān)系,它們之間的順序是任意的,也就是說非線性的數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)元素之間不存在前驅(qū)和后繼的順序關(guān)系,為使初學(xué)者掌握其存儲結(jié)構(gòu)對應(yīng)的操作等相關(guān)知識點,必須將數(shù)據(jù)結(jié)構(gòu)教科書中關(guān)于樹與圖的遍歷進(jìn)行深入而細(xì)膩的講授。以二叉樹的遍歷問題為例,說明非線性結(jié)構(gòu)應(yīng)該著重講授的知識點與教學(xué)方式。一般遍歷某二叉樹的原則是:先確定樹根,然后按照樹的遞歸原則進(jìn)行先序、中序和后序等遍歷,下圖3所示。從三種遍歷的序列可以看出,其每種遍歷的結(jié)果序列都有其唯一的前驅(qū)和后繼結(jié)點。這個規(guī)律說明一個道理:任何的非線性結(jié)構(gòu)的結(jié)點元素都可以通過先確定遍歷的名稱,然后通過遍歷方便地對其進(jìn)行訪問,比如:在前序遍歷的序列“-+a*b-cd/ef”仿照線性表的定義找出它們之間的前驅(qū)與后繼之間的關(guān)系;另外,同樣中序和后繼的遍歷結(jié)果也可以仿照線性表的定義找出它們之間的前驅(qū)與后繼之間的關(guān)系。同時,注意對學(xué)生發(fā)散性思維的培養(yǎng),可通過三種遍歷結(jié)果,進(jìn)一步解釋難以理解的概念推理,推論一:若已知一棵二叉樹的前序序列和中序序列,則可以唯一地確定這棵二叉樹;推論二:若已知一棵二叉樹的后序序列和中序序列,則也可以唯一地確定這棵二叉樹。在講授該本課程知識點的同時,應(yīng)考慮對后繼課程的鋪墊與銜接,上述三種遍歷結(jié)果,對后續(xù)《編譯原理》課程的前綴碼、中綴碼、后綴碼等概念的理解與掌握將起到重要作用。
四、運用靈活的教學(xué)方式講授難點章節(jié)
由于數(shù)據(jù)結(jié)構(gòu)課程設(shè)計到多學(xué)科(專業(yè))知識點,因此,教與學(xué)的過程中,難免存在難點、“瓶頸”問題和難以理解的算法。為解決此問題,在教學(xué)中應(yīng)注重選用具有代表性的例子,如:在第七章的許多工程類例子與運籌學(xué)的例子非常相似,因此,在講授此章節(jié)時,注重教材例子與運籌學(xué)學(xué)習(xí)的重點,但不同專業(yè)基礎(chǔ)課程的側(cè)重點不同。
1.非線性數(shù)據(jù)結(jié)構(gòu)的講授方法。以第七章為例,該章的相關(guān)知識內(nèi)容有:圖論、數(shù)據(jù)的邏輯結(jié)構(gòu)及其對應(yīng)的物理結(jié)構(gòu)、算法實現(xiàn)的技巧與方法、優(yōu)化問題、非線性問題的映射方法。主要存在如下難點:①非線性問題的邏輯表示方法。根據(jù)工程類例子的實際需求,找出該問題的邏輯表示方法是解決問題的核心。如:將符合多種方案選擇的工程類的工序問題(如:排課問題、具有先后時間次序的問題),運用有向圖的知識點將該問題表示清晰;應(yīng)該標(biāo)明該數(shù)據(jù)元素屬于鄰接表還是順序存儲形式。②非線性問題的物理表示方法。通過問題的邏輯表示方法可以將工程類的工序問題轉(zhuǎn)換成有向圖的存儲方式,然后再選擇圖的存儲結(jié)構(gòu),如:數(shù)組(順序)存儲、鄰接表(鏈?zhǔn)剑┐鎯Φ确绞健?/p>
、廴绾尉幹茖崿F(xiàn)解決非線性問題的算法(程序)。上述的邏輯結(jié)構(gòu)確定了之后,再根據(jù)實際問題的要求進(jìn)行實現(xiàn)程序的核心部分即算法的編制工作,當(dāng)算法太復(fù)雜時,則先設(shè)計算法流程圖然后再編寫實現(xiàn)算法的程序。
2.非線性數(shù)據(jù)結(jié)構(gòu)的上機(jī)實踐方法。最為有效的方法是選擇學(xué)生日常生活中與工程類算法處理流程相近的例子。如在拓?fù)渑判虻纳蠙C(jī)實踐選擇的題目是給某專業(yè)課程進(jìn)行排序,這個例子的選課過程正好符合工程類工序(周期)施工排序的案例;設(shè)計報文或字符編碼時,按照第六章中的哈弗曼樹的存儲結(jié)構(gòu)對報文進(jìn)行編碼;選擇順序線性表的上機(jī)例子是在一張學(xué)生登記表中進(jìn)行插入和刪除運算;選擇鏈?zhǔn)骄性表的上機(jī)例子是在一張按照拼音順序進(jìn)行插入和刪除運算的線性表。
五、閱讀程序的技巧與必備知識
數(shù)據(jù)結(jié)構(gòu)的大量算法都要靠其對應(yīng)的程序來驗證,那么,如何針對數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法來編程并且閱讀這些經(jīng)典的算法(程序)呢?這也是學(xué)好數(shù)據(jù)結(jié)構(gòu)這門課程的關(guān)鍵。
1.讓學(xué)生通過閱讀程序,了解如何科學(xué)選取一個好的程序(算法)。由于程序是依靠“算法+數(shù)據(jù)結(jié)構(gòu)”實現(xiàn)的,對一個實際問題來說,可以有不同的程序來實現(xiàn)。僅以一個簡單的例子說明,如:運用計算機(jī)進(jìn)行n的平方計算,有3種方法:n的平方=n n;n的平方=1+3+…+2n-1;高級語言自帶的求平方函數(shù),如doublepow(n,2)。上述算法一個采用乘法,一個采用加法,一個是高級語言自帶的,究竟哪種方法好呢?主要還是看其運算精度、算法的復(fù)雜度和空間復(fù)雜度等綜合指標(biāo)。
2.讓學(xué)生通過閱讀程序,了解和掌握相關(guān)知識點。應(yīng)補(bǔ)充程序設(shè)計分類的相關(guān)知識。程序包括:直接程序設(shè)計,條件控制的程序,循環(huán)控制的程序(計數(shù)器控制的循環(huán)結(jié)構(gòu)程序的算法、條件控制的循環(huán)結(jié)構(gòu)程序的算法、變量控制的循環(huán)結(jié)構(gòu)程序的算法)。還應(yīng)該向?qū)W生介紹算法轉(zhuǎn)換為運行程序的經(jīng)驗,如:數(shù)據(jù)的初始化如何處理;程序中的循環(huán)計數(shù)器與判斷條件以及檢驗結(jié)果如何檢驗;遞歸程序中的出口條件判斷問題;邏輯變量、精度、機(jī)器零、數(shù)值零、文本非結(jié)構(gòu)化等歸一問題。
3.快速閱讀程序的必備知識。按照數(shù)據(jù)結(jié)構(gòu)的課程要求,必須在讀懂經(jīng)典算法的基礎(chǔ)上,才能夠編制一個邏輯結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)某绦颉5,在教學(xué)中發(fā)現(xiàn),有的學(xué)生學(xué)習(xí)方法不當(dāng),導(dǎo)致閱讀程序的能力低而不能系統(tǒng)掌握數(shù)據(jù)結(jié)構(gòu)課程的知識點。為了解決這一“瓶頸”問題,在講授數(shù)據(jù)結(jié)構(gòu)第一章緒論內(nèi)容中,增加了程序設(shè)計方法、編制算法流程圖的標(biāo)準(zhǔn)與規(guī)定、算法與程序的區(qū)分、如何選用大O來計算算法的時間復(fù)雜度和空間復(fù)雜度等知識點。遞歸程序的閱讀是數(shù)據(jù)結(jié)構(gòu)中較難掌握的內(nèi)容。為讓學(xué)生順利閱讀遞歸程序,必須在閱讀遞歸算法之前,補(bǔ)充相關(guān)的知識,如:計算機(jī)原理“中斷”的概念;程序設(shè)計中的過程調(diào)用的步驟和閱讀方法;遞歸程序本身的特點,以及遞歸過程與一般過程的區(qū)別等。
六、小結(jié)
數(shù)據(jù)結(jié)構(gòu)課程是計算機(jī)相關(guān)專業(yè)重要的基礎(chǔ)課程之一,但課程學(xué)習(xí)難度較大,為提高該課程的教學(xué)質(zhì)量和教學(xué)效果,本文梳理了數(shù)據(jù)結(jié)構(gòu)的先修后繼課程,構(gòu)建了課程的知識體系結(jié)構(gòu),提煉出數(shù)據(jù)結(jié)構(gòu)知識點分類的線性與非線性兩條主線,強(qiáng)調(diào)將理論學(xué)習(xí)與工程實踐的有機(jī)結(jié)合,提出實現(xiàn)程序設(shè)計與具備閱讀程序的技巧是解決課程難點的重要手段。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉民。數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2011.
[2]陳燕,等。數(shù)據(jù)結(jié)構(gòu)[M].北京:科學(xué)出版社,2014.
[3]陳志珍,等。數(shù)據(jù)結(jié)構(gòu)算法應(yīng)用—基于Floyd算法的醫(yī)院選址問題求解[J].教育教學(xué)論壇,2014,(36):280-281.
[4]陳燕,等。數(shù)據(jù)結(jié)構(gòu)教學(xué)方法的探討[J].教育教學(xué)論壇,2013,(49):82-84.
【數(shù)據(jù)結(jié)構(gòu)課程難點講授方法與知識】相關(guān)文章:
研究型課程的定位、特點及實施中的難點問題08-17
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會02-22
環(huán)境保護(hù)驗收監(jiān)測難點與解決方法08-19
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會【推薦】09-06
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會8篇03-29
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會(8篇)03-29
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會(10篇)03-31
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會10篇02-22