詹澤梅
(長江大學計算機科學學院,湖北 荊州 434023)
數據結構是計算機專業的一門重要基礎課程,它以程序設計語言為基礎,培養學生進行復雜程序設計的能力。該課程也是后續一些重要專業課的基礎。由于學生在此課程之前通常只學習了一門或兩門編程課程,程序設計能力還比較薄弱,所以學生普遍認為數據結構課程內容繁多、復雜、抽象。為了提高教學質量,教育者們研究了”混合式教學”[1-2]、分層教學法[3]、案例驅動[4]、融合式教學[5]等多種教學模式和方法,取得了一定的效果。針對數據結構課程內容繁多、復雜的情況,為各部分內容設置統一的內容綱要,將綱要貫穿整個教學過程,能幫助學生快速理清學習思路,降低內容復雜程度,從而讓學生掌握課程內容,達到較好的教學效果。
綱要貫穿式教學首先要有能概括各章或絕大部分教學內容的綱要,而綱要的確定需要通過分析各章內容得到。嚴蔚敏、吳偉民編著的《數據結構(C語言版)》[6]被許多高校計算機專業選定為數據結構課程的教材,至今累計發行已超400萬冊。筆者將以此書為教材,分析貫穿式綱要的設置。
縱觀各本數據結構教材,其主要內容是介紹各種不同結構的數據類型,包括線性表、棧、隊列、字符串、樹和二叉樹、圖等。下面將分析教材中這些數據類型的主要內容。表1-表6是對教材中各部分內容的歸納。

表1 線性表

表2 棧

表3 隊列

表6 圖

表5 樹和二叉樹
從表1-表6可看出在介紹每一種數據類型時,首先需要先分析它的特點,介紹其抽象類型定義,讓學生了解這種數據類型的特征、元素之間的關系、常用操作。有的還會介紹本數據類型的相關概念,例如字符串、樹和二叉樹、圖都在本章開頭介紹了相關概念。
接著就要分析數據類型在計算機中的存儲表示。因為數據結構在計算機中的存儲結構有兩種:順序存儲結構和鏈式存儲結構,所以需要從順序存儲結構和鏈式存儲結構兩方面分析數據類型在計算機中的存儲表示。順序表、順序棧、循環隊列、串的定長順序存儲、串的堆分配存儲、二叉樹的順序表示這些都屬于順序存儲結構;線性鏈表、循環鏈表、雙向鏈表、鏈棧、鏈隊列、串的塊鏈存儲、二叉鏈表這些都屬于鏈式存儲結構。樹和圖的結構比較復雜,任意兩個元素之間都可能存在關系,所以很難用順序存儲結構,但可以借助數組表示元素之間的關系。例如樹的雙親表示法、圖的數組表示法。樹和圖的鏈式存儲結構有:樹的子鏈表、樹的二叉鏈表、圖的鄰接表、圖的十字鏈表、圖的鄰接多重表。
最后,為了加強學生對數據類型的理解和對前面知識的應用,教材上對每種數據類型都舉例講解了一個或多個實例。這些實例都是需要使用相應數據類型的典型例子。
根據上面分析,可提煉出貫穿教材各種數據類型的一級講解綱要,如圖1。

圖1 一級綱要
在一級綱要中有順序存儲表示和實現、鏈式存儲表示和實現。從表1-表6中可看出教材2.2、2.3、3.1.2、3.4.2、3.4.3、4.2、6.2、6.3、6.4、7.2、7.3小節的內容均屬于順序或鏈式存儲表示和實現,這部分內容也是課程的重點。分析這些內容可發現:對每一種數據類型,不管是介紹它的順序存儲表示,還是介紹它的鏈式存儲表示,都主要從兩方面講解,一是類型定義,二是基本操作的算法實現。合理的類型定義應是基于其存儲特點給出的,因此,可先分析此數據類型的存儲特點,然后再用C語言描述其類型定義。當數據類型在計算機中采用不同的類型定義表示時,常用基本操作的算法也互不相同。對于每一個操作,可先用自然語言分析具體怎么做,再用類C語言描述出具體步驟,從而得到操作的算法函數,最后分析算法時間復雜度。
根據上面的分析,可提煉出數據類型的每種存儲表示和實現的二級講解綱要,如圖2。

圖2 二級綱要
設置好貫穿整個教學過程的綱要后,就要在授課過程中使用綱要教學。數據結構的教學一般分為理論教學和上機實踐。理論教學是實施綱要貫穿式教學的主要部分。
數據結構課程第一章是緒論,從第二章開始就介紹各種不同結構的數據類型,這時便可以采用綱要貫穿式教學。在講解每章內容之前先擺出一級綱要,讓學生對本章內容有一個大概了解。接著,便按綱要講解各部分內容。在講解數據類型的兩種存儲表示時,也是先給出二級綱要,并對照綱要列出本數據類型的常用操作,然后再逐個操作講解。對于兩種存儲表示,既可以兩者都詳細講解,也可根據實際應用情況詳細講解一種。例如線性表兩種存儲表示都比較常用,所以兩者都詳細講解。二叉樹的順序存儲表示比較適合于存儲完全二叉樹,對于非完全二叉樹采用順序存儲表示比較浪費存儲空間,所以只用詳細講解二叉樹的鏈式存儲表示。
每章內容結束時,需要對照綱要進行總結,幫助學生梳理本章內容,讓學生對本章內容有更清晰的認識。
講第一種數據類型時,學生可能對綱要認識比較模糊,但隨著在第二種、第三種等數據類型的講解中使用同樣的綱要,學生便會逐漸熟悉綱要,進而容易掌握每種數據類型的整體內容。
數據結構是一門理論性和實踐性都很強的課程,上機實踐是不可或缺的教學環節,也是理論知識的鞏固和應用。二級綱要對應的是數據類型在計算機中的存儲表示和實現,具體包含類型定義和常用操作的算法,與程序相關,適合將其作為上機內容。將二級綱要中的內容貫穿于上機實踐中,這樣能加深學生對理論知識的深入理解。
根據二級綱要將單鏈表的上機任務設置為:定義單鏈表類型,實現單鏈表的創建操作、向單鏈表中插入一個元素操作、從單鏈表中刪除一個元素操作、查找第i個元素值的操作以及輸出單鏈表所有元素的操作。單鏈表上機任務如圖3所示。圖4至圖8分別展示了另外幾種數據類型根據二級綱要設置的上機任務。

圖3 單鏈表上機任務

圖8 圖上機任務
上機任務的內容還可根據學生層次適當調整內容。如果某個上機任務相對于學生來說比較簡單,可將應用實例加入其中;如果某個上機任務比較復雜,可選取部分內容。例如圖4所示的棧上機任務比較簡單,可將數值轉換或括號匹配實例加入其中。圖7所示的圖上機任務比較復雜,可從深度優先遍歷、廣度優先遍歷中選取一種遍歷操作實現。

圖4 棧上機任務

圖7 二叉樹上機任務

圖5 隊列上機任務

圖6 字符串上機任務
綱要貫穿式教學方法應用于數據結構的理論教學和上機實踐中。在理論教學中,通過統一的綱要貫穿各部分內容,能幫助學生理清繁雜的教學內容,讓學生快速掌握學習內容。在上機實踐中,將綱要內容轉換成程序,將理論應用于實踐,能進一步加深學生對理論知識的理解。在教學實踐中,該方法可與其他教學方法相結合,運用多種教學方式,從而達到更好的教學效果。