劉麗艷
(大連理工大學(xué)城市學(xué)院,大連 116600)
案例教學(xué)法在《數(shù)據(jù)結(jié)構(gòu)》線性表教學(xué)中的應(yīng)用
劉麗艷
(大連理工大學(xué)城市學(xué)院,大連 116600)
《數(shù)據(jù)結(jié)構(gòu)》課程涉及概念多,內(nèi)容抽象,學(xué)生難于理解。以線性表的教學(xué)為例,從引入案例、分析案例和總結(jié)案例三個方面進(jìn)行闡述,分析并解決在線性表的教學(xué)過程中遇到的問題。激發(fā)學(xué)生的學(xué)習(xí)興趣,取得較好的教學(xué)效果。
案例教學(xué)法;數(shù)據(jù)結(jié)構(gòu);線性表
《數(shù)據(jù)結(jié)構(gòu)》是計算機(jī)相關(guān)專業(yè)的一門重要專業(yè)基礎(chǔ)課,它為計算機(jī)程序設(shè)計提供了重要的理論技術(shù)基礎(chǔ),而且該課程已成為其他理工專業(yè)的熱門選修課。在該門課程的教學(xué)過程中,主要講授各種數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及其相應(yīng)操作的算法實現(xiàn)。要求學(xué)生學(xué)會分析研究計算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應(yīng)的算法,并初步掌握算法的時間分析和空間分析的技術(shù)[1]。由于該課程的教學(xué)內(nèi)容廣泛,概念多,而且邏輯性和抽象性都很強(qiáng),使得學(xué)生在理解和學(xué)習(xí)上都比較困難,同時對于其他理工專業(yè)的學(xué)生內(nèi)容更抽象,理解更困難,更容易產(chǎn)生厭學(xué)情緒。因此,需要教師在教學(xué)過程中不斷改進(jìn)和提高教學(xué)方法,引導(dǎo)學(xué)生積極主動地學(xué)習(xí),不斷激發(fā)學(xué)生的學(xué)習(xí)興趣,從而達(dá)到提高教學(xué)質(zhì)量的目的。本文以《數(shù)據(jù)結(jié)構(gòu)》課程中線性表的教學(xué)為例,分析并闡述了案例教學(xué)法在線性表教學(xué)過程中的應(yīng)用,提高了課堂教學(xué)的趣味性,收到了較好的教學(xué)效果。
案例教學(xué)法最早在19世紀(jì)末出現(xiàn)在美國,20世紀(jì)30年代由美國哈佛商學(xué)院倡導(dǎo),廣泛應(yīng)用于商業(yè)教育中[2]。當(dāng)時的案例教學(xué)法是一種很獨特的教學(xué)方法,所選取的案例都是來自于商業(yè)管理的真實情境或事件,通過這種方式,能夠引導(dǎo)和培養(yǎng)學(xué)生主動參與課堂討論,教學(xué)效果很好。20世紀(jì)70年代后,案例教學(xué)法在普通教育領(lǐng)域開始受到重視并迅速普及。
所謂案例教學(xué)法,就是教師根據(jù)教學(xué)目的和教學(xué)內(nèi)容的需要,運用典型案例,讓學(xué)生積極思考、主動探索,以提高他們運用所學(xué)知識分析、解決問題能力的一種教學(xué)方法[3]。具體的實施過程可以分為三步:首先,教師把事先選擇好的案例提供給學(xué)生,讓學(xué)生帶著案例所提出的問題去理解和運用教材中的理論知識,這樣不僅提高了學(xué)生分析問題和解決問題的能力,而且激發(fā)了學(xué)生的學(xué)習(xí)熱情。接著,教師針對精選的案例,提出相關(guān)問題,引導(dǎo)學(xué)生積極思考,讓學(xué)生對案例進(jìn)行自主探究、分析和討論。具體的教學(xué)過程可以靈活多樣,如:分組討論、全班討論等。在討論過程中,針對學(xué)生在討論中不容易解決的問題,教師要進(jìn)行引導(dǎo)啟發(fā)。在分析與討論中,學(xué)生不僅理解和掌握了新知識,而且提高了解決問題的能力。討論結(jié)束后,教師要對討論的結(jié)果進(jìn)行歸納總結(jié),并及時客觀地評價學(xué)生在討論過程中的優(yōu)缺點,針對案例的疑難問題進(jìn)行深入的剖析和總結(jié)。最后教師和學(xué)生一起總結(jié)出解決案例問題的最佳方案,使得學(xué)生學(xué)會從不同角度來探究和解決案例問題,并能夠有效地運用所學(xué)的知識來解決實際問題。
線性結(jié)構(gòu)是樹形結(jié)構(gòu)和圖形結(jié)構(gòu)的基礎(chǔ),其教學(xué)效果直接影響學(xué)生對后續(xù)內(nèi)容的學(xué)習(xí)興趣。在線性表的教學(xué)過程中,涉及的主要內(nèi)容包括線性表的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)以及不同存儲結(jié)構(gòu)下基本操作的算法實現(xiàn),其中,線性表的存儲結(jié)構(gòu)和基本操作的算法實現(xiàn)是教學(xué)的重點和難點。本文針對線性表的存儲結(jié)構(gòu):順序表和單鏈表,采用了不同的典型案例,詳細(xì)分析了順序表和單鏈表的類型定義,重點討論了插入算法在順序表和的單鏈表中的不同實現(xiàn),最后總結(jié)了順序表和單鏈表的區(qū)別。
順序表是線性表的一種順序存儲結(jié)構(gòu)。在順序表中,線性表的結(jié)點按邏輯順序依次存放在一組地址連續(xù)的存儲單元里。順序表的特點是線性表中結(jié)點的邏輯順序與存儲順序一致。
(1)引入案例
設(shè)計一個班級通訊錄,其中包括班級每名學(xué)生的學(xué)號、姓名、電話、QQ號、家長聯(lián)系方式等。要求實現(xiàn)如下功能:插入一條新紀(jì)錄;刪除一條紀(jì)錄;查詢通訊錄中的信息。
(2)分析案例
首先,需要給出該案例中涉及的類型定義,類型定義是后面算法實現(xiàn)的基礎(chǔ)。
每名學(xué)生的信息使用結(jié)構(gòu)體類型表示,具體定義如下:
班級通訊錄使用結(jié)構(gòu)體數(shù)組表示,同時需要設(shè)計一個變量表示班級實際的人數(shù),班級通訊錄的類型定義如下:
接著引出教材[1]中順序表的類型定義:
在上面順序表的類型定義中,定義了一個指針變量elem指向一個數(shù)組,即線性表中的元素也是存儲在數(shù)組中。與上面班級通訊錄的類型定義的區(qū)別是,班級通訊錄類型定義的數(shù)組的空間是固定的,而順序表的類型定義中的數(shù)組空間是可以擴(kuò)展的,更加靈活,更具有普遍性。
然后,給出在線性表中插入一條記錄的算法實現(xiàn)。插入一條記錄是指在線性表的第i個數(shù)據(jù)元素之前插入一個新元素,就是要使長度為n的線性表變成長度為n+1的線性表。圖1表示了一個線性表在進(jìn)行插入一條記錄的前后位置變化。
圖1 線性表插入前后的狀況
通過圖1可以看出,在第i個元素之前插入一個新元素,需要將第i到第n個元素整體向后移動一個位置,即共移動了n-i+1次。這個移動元素的過程是個重復(fù)的過程,需要使用循環(huán)結(jié)構(gòu)實現(xiàn)。實現(xiàn)的代碼如下:
(3)總結(jié)案例
通過上面定義的結(jié)構(gòu)體數(shù)組很容易理解線性表的順序存儲結(jié)構(gòu)。由于刪除操作和插入操作過程相反,所以,在詳細(xì)分析插入算法的基礎(chǔ)上,也能夠很容易理解順序表的刪除操作。同時,由于學(xué)生在C語言程序設(shè)計課程中學(xué)習(xí)過順序查找算法,所以對于順序表的查找操作也能夠很容易理解。
鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)。在鏈表中,線性表的數(shù)據(jù)元素存儲在一組任意的存儲單元中,這些存儲單元可以連續(xù),也可以不連續(xù),并且借助指示元素存儲位置的指針表示數(shù)據(jù)元素間的邏輯關(guān)系。每個結(jié)點除數(shù)據(jù)域外只包含一個指針域的鏈表稱為線性鏈表或單鏈表。
(1)引入案例
設(shè)計和實現(xiàn)某班C語言課程成績管理的完整程序。學(xué)生數(shù)據(jù)包含學(xué)生的學(xué)號、姓名和成績,要求完成如下功能:創(chuàng)建成績鏈表;插入一個學(xué)生的數(shù)據(jù);刪除一個學(xué)生的數(shù)據(jù);按學(xué)號和姓名查找某個學(xué)生;按從高到低的順序排列學(xué)生成績。
(2)分析案例
此處的設(shè)計思想基本與順序表相同,只是對保存學(xué)生成績的線性表采用單鏈表存儲結(jié)構(gòu)實現(xiàn)。本案例中用到的學(xué)生數(shù)據(jù)也是程序運行時由用戶從鍵盤輸入,保存到一個單鏈表中。
學(xué)生結(jié)構(gòu)體類型的定義與順序表應(yīng)用舉例處的類型定義類似,用C語言描述如下:
最后,為了與順序表對比,給出在單鏈表中插入一個結(jié)點的算法實現(xiàn)。在p所指向的結(jié)點后插入一個新結(jié)點,需要修改p所指向的結(jié)點的指針域,具體的操作如圖2所示:
圖2 單鏈表中插入結(jié)點前后指針變化狀況
通過圖2可以看出,在插入一個新結(jié)點x后,結(jié)點x的指針域指向了結(jié)點b,結(jié)點a的指針域指向了結(jié)點x。具體實現(xiàn)的代碼如下:
(3)總結(jié)案例
由于單鏈表的刪除操作和插入操作過程相反,所以,在詳細(xì)分析插入算法的基礎(chǔ)上,能夠很容易理解單鏈表的刪除操作。而創(chuàng)建單鏈表的過程實質(zhì)就是插入操作的重復(fù)過程,單鏈表的查找操作過程與順序表的查找操作過程類似,能夠很容易理解。通過比較順序表與單鏈表的插入算法,很容易理解并總結(jié)出兩種不同存儲結(jié)構(gòu)的區(qū)別,即單鏈表的插入操作比順序表的插入操作更加靈活方便,不需要移動元素。
實踐表明,通過在線性表的教學(xué)中實施案例教學(xué)法,能夠充分激發(fā)學(xué)生學(xué)習(xí)的熱情,使得學(xué)生對于抽象內(nèi)容更加容易理解和掌握,同時也能提高學(xué)生分析問題和解決問題的能力。數(shù)據(jù)結(jié)構(gòu)是計算機(jī)學(xué)科一門非常重要的專業(yè)基礎(chǔ)課,教學(xué)難度大,在教學(xué)過程中合理有效地使用案例教學(xué)法,能夠取得較好的教學(xué)效果。
[1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2007.
[2]楊玫,李瑛,李祁.案例導(dǎo)入教學(xué)法在數(shù)據(jù)結(jié)構(gòu)教學(xué)中的應(yīng)用[J].電腦知識與技術(shù):學(xué)術(shù)交流,2011,07(11X):8272-8273.
[3]許慧,陳興.數(shù)據(jù)結(jié)構(gòu)的案例教學(xué)——棧在“迷宮問題”中的應(yīng)用[J].科技信息,2011(26):88-89.
Application of Case Teaching Method in the Linear Table Teaching of Data Structure
LIU Li-yan
(City Institute,Dalian University of Technology,Dalian 116600)
In Data Structure course,there exist many abstract concepts and content,so it is difficult to understand the course for students.For exam?ple,in the teaching of the linear table,elaborates the introduction of case,the analysis of case and the summary of case,respectively,and analyzes and solves the problems in the teaching process of the linear table.Thus,arouses the students'interest in learning,and obtains good teaching effect.
Case Teaching Method;Data Structure;Linear Table
1007-1423(2017)33-0041-04
10.3969/j.issn.1007-1423.2017.33.010
劉麗艷(1981-),女,內(nèi)蒙古赤峰人,碩士研究生,副教授,研究方向為數(shù)據(jù)挖掘、算法分析與設(shè)計
2017-11-09
2017-11-20