1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 數據結構

數據結構

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇數據結構范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

數據結構范文第1篇

一、需求分析

1、 程序所實現的功能;

2、 程序的輸入,包含輸入的數據格式和說明;

3、 程序的輸出,程序輸出的形式;

4、 測試數據,如果程序輸入的數據量比較大,需要給出測試數據;

5、 合作人及其分工

二、設計說明

1、 主要的數據結構設計說明;

2、 程序的主要流程圖;

3、 程序的主要模塊,要求對主要流程圖中出現的模塊進行說明

4、 程序的主要函數及其偽代碼說明 (不需要完整的代碼) ;

5、 合作人設計分工

三、上機結果及體會

1、 合作人編碼分工

2、 實際完成的情況說明(完成的功能,支持的數據類型等);

3、 程序的性能分析,包括時空分析;

4、 上機過程中出現的問題及其解決方案;

5、 程序中可以改進的地方說明;

6、 程序中可以擴充的功能及設計實現假想;

數據結構范文第2篇

關鍵詞:鏈式存儲結構;數據結構;存儲結構;教學方法

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2017)14-0110-02

在數據結構中,無論是棧、隊列、數組等線性結構還是廣義表、樹和圖等非線性結構都可以使用鏈式存儲結構來實現數據元素和關系的存儲,如何讓學生掌握各種數據結構的鏈式表示和實現,并能在實際應用中靈活使用是數據結構課程教學中的重點和難點。下面分別從概念、特點、定義和操作四個方面來探討講授鏈式存儲結構的方法,以供教學參考。

1鏈式存儲結構的概念

掌握鏈式存儲結構的概念是學習各種不同數據結構的鏈式表示和實現的前提。因此,教學中首先要讓學生明白什么是鏈式存儲結構。相對于可使用數組實現的順序存儲結構來說,學生在學習數據結構之前不僅對鏈式存儲結構的概念是陌生的,而且大多對實現鏈式結構的基礎知識如結構體、指針等也不熟練。因此,在教學中深入淺出地將鏈式存儲結構概念講解清楚很重要。講授時可按數據的結構、存儲結構再到鏈式存儲結構的順序從外到內逐層深入地方式講解,以幫助學生理解概念。

1.1結構

結構指數據元素之間的一種或多種關系,關系可能是線性的,也可能是非線性的。常見的基本結構分為四類,分別是集合、線性表、樹和圖。當然,通常所說的關系是指數據元素之間的邏輯關系即數據的邏輯結構。簡單地理解,結構就是關系。

1.2存儲結構

為了在計算機中實現操作,除了分析數據元素之間的關系即得到數據的邏輯結構外,還要考慮它們在計算機中如何存儲。數據元素和關系在計算機中的表示稱為數據的存儲結構,也稱為物理結構。簡單地理解,存儲結構就是數據在計算機中的存儲方式。

1.3鏈式存儲結構

鏈式存儲結構是通過記錄元素的位置來表示元素與元素之間邏輯關系的一種存儲結構。比如,在線性結構中,若兩個邏輯上相鄰的數據元素在實際存儲時不相鄰,則可以通過將后一個元素所在的位置記錄到前一個元素來實現兩個數據元素之間的前后關系。若是非線性結構,同樣可以通過記錄位置的方式實現兩個元素之間的非線性關系,比如雙親和孩子的關系、鄰接點關系等。其中,位置是存儲元素的地址即指針。在靜態鏈表中,位置是數組的下標。

2鏈式存儲結構的特點

數據結構和算法是計算機科學和工程的基礎,任何一個算法的設計取決于數據的邏輯結構,而算法的實現依賴于數據的存儲結構。因此,只有掌握了數據存儲結構的特點,才能根據實際情況使用合適地存儲結構來實現算法。作為一種非順序存儲結構,鏈式結構有著其自身的特點,掌握這些特點是靈活使用鏈式存儲結構并充分發揮其優點的基礎。授課時,可以通過比喻和類比等方式幫助學生掌握其優缺點。

2.1什么是鏈

鏈式存儲結構的特點體現在“鏈”字上。所謂“鏈”,可以想象為用一根繩將原本有一定關系的數據元素串起來,通過“鏈”可以訪問與指定數據元素有關系的其它元素。舉個線性結構的例子來說明如何鏈接,比如,同學A的后面是同學B,即A是B前驅或者說B是A的后繼。排座位時,為了能體現出兩者的前后關系,若A坐在某個位置,則可以將B直接安排在A的后面,這樣A直接往后就可以找到后面的同學B了。當然,也可以選擇另一種方式,即B不直接坐在A的后面,而是坐在任何一個空位上,只要將他所坐的位置告訴A,這樣A同樣可以找到B了。這個例子里,兩個數據元素之間的先后關系不是在存儲時直接體現出來而是通過記錄位置完成的。可以想象,當多個數據元素都按這種方式存儲時就類似用一個鏈串起了所有的元素,用這種方式存儲的線性表就稱為鏈表。當然,“鏈”不僅可以表示線性關系,還可以將“鏈”進行擴展,根據需要實現如樹、圖等其它更復雜的關系的表示。

2.2優點

鏈式存儲結構借助地址來表示數據元素之間的關系,數據元素在存儲時是按非順序的方式存儲的,因此彌補了順序存儲結構的不足。為使學生更清楚地了解鏈式存儲結構的優點,授課時可采用與順序存儲結構相比較的方式從以下兩個方面來講解。第一,鏈式存儲結構存儲元素時所需存儲單元是動態申請的,不必擔心操作過程中隨數據量變化而引起的存儲空間不足或浪費問題。在順序存儲結構中,存儲空間由一組連續的存儲單元組成,因此,存儲容量受限。然而,鏈式存儲結構采用需要存儲一個元素就動態申請一個存儲單元的方式,存儲單元可以是連續的,也可以是非連續的。第二,在插入和刪除操作時不需要移動數據元素,并且插入、刪除操作靈活。在鏈式存儲結構中,由于數據元素之間的關系是借助地址來表示的,因此在進行插入、刪除操作時,只需要改變地址就可以實現數據元素之間關系的變化。相對于順序存儲結構來說,不需要將待插人的數據元素位置空出,也不需要將刪除的數據元素位置補上。

2.3缺點

除了上述優點之外,鏈式存儲結構也存在一些不足之處。教學中,對鏈式存儲結構缺點的講解,也可以采用與順序存儲結構相比較的方式從兩個方面進行。第一,存儲密度低。為了能實現通過地址來表示數據元素之間的關系,需要將數據元素進行封裝。以線性結構中的單鏈表為例,除了存儲數據元素本身外,還要存儲其后一個元素的地址。因此,應將數據元素封裝成一個結點,其中結點包含兩個域,一個是數據域,用來存儲數據元素值;另一個是指針域,用來存儲后一個元素的地址。與順序存儲結構相比,存儲一個數據元素的代價更大,不僅需要相應大小的空間來存儲數據元素,而且還需要有額外的空間來存儲地址。因此,鏈式存儲結構的存儲密度相對較低。第二,由于鏈式存儲結構不是按順序方式存儲的,因此不能隨機存取,即數據元素必須通過“鏈”來訪問。比如,單鏈表只有一個鏈,只能從第一個結點開始通過指針依次訪問鏈表中的每一個結點,當查找某個數據元素時,即使知道該元素在表中的位置,也不能像數組那樣隨機訪問,只能從第一個結點開始查找并計數,當計數到與所給位置的值相同時才能找到該元素。當然,“鏈”的方式不同,對應的訪問方式也不同。比如,雙向鏈表有兩個鏈,可以通過后繼鏈訪問表中每一個元素,同時還可以通過前驅鏈以逆序的方式依次訪問每個元素。

3鏈式存儲結構的定義

在數據結構中,常見的鏈式存儲結構有單鏈表、循環鏈表、雙向鏈表、十字鏈表、二叉鏈表和鄰接表等,不同的鏈式存儲結構可用來滿足不同的數據結構的表示和實現。然而,無論哪一種數據結構,若要使用鏈式存儲結構,首先要完成它在計算機中的表示,即該鏈式存儲結構所需的結構體類型定義。

通常,鏈式存儲結構的結構體類型包括兩部分:一是為存儲數據元素而封裝成結點的結點類型,二是描述該鏈式結構的結構類型。比如,在單鏈表中,為了實現將后一個數據元素的地址記錄到前一個數據元素中,需要將數據元素封裝成一個結點,這個結點存儲數據元素的值和其后繼元素所在的地址。因此,自定義一個結構體類型即結點類型struct LNode,它包含兩個域,分別為數據域data和指向下一個結點的指針next。設數據元素類型為ElemType,則結點類型定義用C語言描述如下:

這里的指針next在定義時采用了遞歸定義,由于指針指向的是結點,因此定義為結點類型structLNode。另外,當所有結點連接成一個鏈表后,這個鏈表就構成了單鏈表,單鏈表也需要通過定義來描述其作為一個線性表所具有的特征,比如第一個數據元素的地址、數據元素個數等。顯然,若有一個指針L指向鏈表的第一個結點(頭結點或首元結點),則通過此指針就可以找到整個鏈表,類似于數組的首地址,這個指向鏈表的指針L稱為頭指針,頭指針指向的是結點,因此定義為struct LNode類型。它的類型定義如下:

struct LNode*L;

顯然,對于一個單鏈表來說,只要有了頭指針就可以找到鏈表并訪問所有元素。因此對整個鏈表而言,定義一個頭指針即可,其它屬性如數據元素個數可以通過計數操作來實現。學生在初始學習時很容易在定義指針類型上犯錯,不清楚指針究竟該定義成什么類型。其實,指針定義成什么類型完全取決于指針指向的對象類型。比如,單鏈表中指針next的類型是結點類型structLNode而不是數據元素類型ElemType,因為指針指向的是將數據元素封裝成包含數據域和指針域的結點而不是一個數據元素。

4鏈式存儲結構的操作

當使用鏈式存儲結構時,常常需要實現創建、插入、刪除、查找等操作。但是,無論哪種鏈式存儲結構,其多數操作的實現主要還是單鏈表插入、刪除操作的延伸和擴展。因此只要熟練掌握鏈表的插入和刪除,就能實現其它更為復雜的操作。舉例說明,設q指向鏈表中的結點A,p指向待插入的結點B。若要將B插入到A之后,執行pnext=qnext和qnext=p兩條語句即可。為了保證能正確地完成元素的插入,實現插人語句時需滿足“先連上,后斷開”的原則,即先使用pnext=qnext將待插入的結點B連到鏈表中(結點A的后面),然后再執行qnext=p,將A的后繼鏈從鏈表中斷開并連到B上。這兩條語句不能顛倒,若將兩條語句的順序顛倒,即先將A的指針指向B,那么A后繼鏈就斷掉了,B就無法再連接到鏈表中。因此,插人操作中需要按“先連上,再斷開”的順序進行,只要記住了這個原則就可避免實現插入時出錯。

當實現鏈式存儲結構的刪除操作時,執行語句也很簡單。設p指向鏈表中的結點A,若要刪除A后面的結點B,執行pnext=pnextnext即可。但是,際操作中,往往還需要將刪除結點的元素值帶回,因此多引入一個指針q,讓q先指向待刪除的結點B,即執行q=pnext,然后再執行pnext=qnext,將B從鏈表中刪除。這樣,即使B已經從鏈表中刪除,但是結點B還是由q指向,因為B的地址存在q中,此時只要在釋放q之前把qdata賦值給某個變量就可以通過該變量繼續使用刪除的數據元素。因此,在刪除操作中,由被刪除的數據元素值是否還需要使用來決定刪除語句。如果不需要,執行pnext=pnextnext即可。但是,若還需要使用被刪除的元素值,則多引入一個輔助的指針q,同時執行q=pnext和pnext=qnext兩條語句。

相對單鏈表來說,其它的鏈式存儲結構可能在指針域或數據域擴充后有更為復雜的操作。然而,只要將最基本的單鏈表的插入和刪除操作掌握好,就可以在實現其它鏈式存儲結構操作時輕松應對。

數據結構范文第3篇

關鍵詞: 《數據結構》 教學方法 改進 實踐

《數據結構》是研究非數值計算的程序設計問題中計算機操作對象(數據),以及它們之間的關系(結構)和操作(算法)等的一門科學。它不僅是一般程序設計的基礎,而且是設計和實現編譯程序、操作系統、數據庫系統及其它系統程序和大型應用程序的重要基礎。《數據結構》課程是計算機及相關學科的一門重要的專業基礎課,也是一門鍛煉程序設計能力的實踐課程。然而,由于以下原因,這門課學習起來相當困難。

(1)本課程高度抽象,枯燥,學生剛開始不容易產生興趣;

(2)與C語言有直接的關系,而C語言大部分同學并沒有學好;

(3)教學內容較多,且相互聯系,沒有明顯的重點次重點;

(4)數據結構算法比較靈活,傳統教學方法不利于拓展學生思路;

(5)具體實踐需要考慮各方面因素。

那么如何解決上述問題,降低理論性程度,增強直觀性,提高學生的學習興趣呢?我從自己的教學體會出發,探討《數據結構》的一些教學方法,希望起到拋磚引玉作用,與同仁共同提高教學水平,以推動《數據結構》課程不斷向前發展。

1.講好第一堂課,調動學生的學習興趣

《數據結構》雖然包含了較多的理論內容,但具有實踐應用的特點。“興趣是最好的老師”。因此在進行數據結構課的第一次授課中,我并不急于介紹理論,也不順著內容講解,而是強調應用,先講幾個容易結合實際的定義。比如,在介紹邏輯結構這個定義時,教師要結合實際中的應用來激發學生的學習興趣。如圖書館的書目檢索系統,如何組織圖書的登錄號、書名、分類號等數據,才能快速實現查找、插入、刪除操作;如一個單位的人事管理系統,怎么說明上下級關系,怎么添加刪除;如通信網絡設計問題,如在一個市里到縣區之間架設通信網絡,怎樣安排線路以求花費最少;再如計算機如何解決迷宮問題,等等。這些應用貼近生活,學生都比較熟悉,興趣就能夠被激發起來,形成想了解具體問題到底怎么實現的愿望。而且實踐證明,當學生有了足夠的興趣,并能感覺到具體知識在實際生活中的價值,就越能吸引學生產生對知識的向往與追求的意向。這樣就可以讓學生從“要我學”變為“我要學”。同時,以上例子就已經囊括了本門課中涉及的三大類數據結構――線性表、樹和圖,這樣教師就可以水到渠成地歸結出數據結構的概念和本章涉及的幾種數據結構的類型,為后續章節的講解打下良好的基礎。

2.解決學生對C語言掌握的不足

C語言程序設計是數據結構的前導課程之一,學生對它的掌握程度,直接關系到數據結構課程的教學效果。C語言非常靈活,對于剛剛學完該課程的學生而言,運用不一定很自如。另外,數據結構課程教學過程中主要運用指針、函數、數組作為函數參數,以及結構體類型來分析、解決問題,而這正是C語言的難點內容。對于大部分學生來說,C語言運用能力不是很強,如果上課時直接講程序,學生就會感覺很吃力,也聽不明白。如何來解決這個問題呢?我們可以利用一兩次課的時間來復習C語言的相關知識,即數組、指針、函數和結構體等。教師可以將這些學時納入到教學進度表中,在復習時不需要講得太詳細,只要把數據結構課需要用到的內容涵蓋即可,這樣學生就能循序漸進地過渡到數據結構教學之中了。

3.教學內容的歸納提煉

部分教師認為《數據結構》這門課難講,學生也反映這門課不好學。這是因為《數據結構》不但有很強的理論性,而且有一定的抽象性。既然“教”與“學”都有困難,那么就應該尋找切入點,而在“教”與“學”過程中首先應該突破的就是教師應該怎么“教”。教師首先自己要熟悉教材、精通教材,把握本課程的重點和難點,能夠將前后內容聯系起來分析思考,盡量從中尋找共性的、規律性的東西進行歸納與提煉,并將其系統化、具體化,避免“照本宣科”。例如從數據結構的定義出發包含三方面的內容:邏輯結構、存儲結構和算法。在講到每種數據結構(線性表、棧、隊列、樹、圖)都會涉及到它的邏輯結構、存儲結構和算法。教師在講授的過程中可以用數據結構包含的三方面內容作為一條主線貫穿整本書,每講到一種新的數據結構時都可以拿出這條主線來闡明其上的三方面內容。這樣,學生學起來就會覺得有系統性,容易把握。綜觀全書,不論是線性表、樹還是圖,最基本的的存儲結構就是兩類:順序存儲結構、鏈式存儲結構,只要把它們掌握好,整個課程學習的難度就不大。所以在教學過程中,教師一方面要緊扣課程的主脈,把基本的概念與術語解釋清楚,把各種數據結構與操作運算分析清楚,把有關算法的設計思路與實現方法講解清楚。另一方面要注重有關內容的前后呼應,把握其內在聯系,對各種相關結構的特點與操作,進行相應的歸納、總結與對比。

4.教學方法的改進

教學方法是需要特別注意的問題,傳統的教學方法并不適合現在的教學,教師應該對教學方法進行革新。在《數據結構》教學中,教師應該注意讓學生的交流互動,其中“提問題”非常重要,特別是算法設計中可以設計許多“問題”。教師在備課時,不僅要消化教材內容,深入探究知識的奧秘,而且要精心設計課堂情景,準備好“問題”;數據結構本身算法是比較靈活的,往往一個算法可以有多種實現方法。這樣,教師在課堂教學時不僅要生動詳盡地講解知識,而且要努力激發學生思維;不僅要求學生認真聽,而且要引導學生積極思考,逐步培養學生舉一反三,主動分析問題、解決問題的能力。在課堂教學中,教師除了通過提問增加教師與學生之間的交流互動,還要設置一些機會,鼓勵學生之間進行交流與溝通。例如,講到拓撲排序時,教師應該先把基本原理講清楚,然后講一種常見的實際解決辦法,再由學生自由討論,看有沒有其他辦法可以同樣解決問題,由學生描述,教師進行點評。這樣既有助于活躍課堂氣氛,提高學生的積極性,又能增強競爭意識,鍛煉學生的表達能力。

5.加強實踐環節

為使學生真正學好《數據結構》,除了在課堂上要采用行之有效的教學方法外,教師還要讓學生勤動手,多實踐。只有通過實踐才能發現“教”與“學”中存在的問題。實踐的首要環節是多做習題。學生不僅要做,而且要求交作業。教師則要進行全面檢查與批改,對出現的問題要及時進行總結、歸納、講評。在講評時,教師要細講解題思路,規范解題方法,并強調有關的注意事項。同時,對于作業中的可取之處要加以表揚,鼓勵他們開拓創新。其次是上機實驗。實驗可分兩部分,一是驗證性實驗,主要結合課堂理論教學內容展開,學生可以對在課堂上學到的基本算法進行驗證;二是運用性實驗,堅持“學以致用”的原則,目的是讓學生充分利用所學的理論知識進行相對復雜的應用設計;三是進行系統的設計。上機結束后教師應要求學生完成實習報告,寫出自己調試過程中遇到的問題是如何解決的,以及對設計與實現的回顧討論和分析,算法的時空分析,測試結果,以及經驗體會,并附上源程序代碼,從而寫出完整的實習報告。批改學生實習報告后,教師應對學生的上機實習情況作及時總結,指出成功之處和不足之處。

參考文獻:

[1]嚴尉敏,吳偉民.數據結構 C語言描述.清華大學出版社,1997.

數據結構范文第4篇

關鍵詞:課程內容;結構分析;教師素質;學習能力

隨著我國綜合實力的不斷增強和國際地位的不斷提升,大學計算機教育的重要性逐漸突顯出來,而計算機教育中數據結構課程則是重中之重。進入21世紀,計算機科學與技術及相關的專業一度成為熱門專業,而數據結構是該學科的基礎課程,要想掌握良好的計算機技術就一定要打好基礎,學好數據結構課程。然而,數據結構課程內容較為抽象、復雜,具有動態性,學生在學習的過程中感覺無從下手,到實踐的過程中更是由于沒有理論知識的支持而感到疑惑重重。因此,培養學生的自信心,激發學生的熱情便成為當務之急。筆者將在下文中結合自己幾年的執教經驗對數據結構課程進行探究,不足之處,還請指教。

一、數據課程內容及體系結構分析

數據結構是計算機科學與應用專業的基礎課程,該課程內容主要是介紹了軟件設計中最常見的數據結構及其儲存結構,本課程的難點是數據組織方面的動態儲存結構及遞歸技術。筆者認為,可以從以下幾個方面進行教學:

1.做到學以致用

在進行數據課程教學的過程中,教師可以結合實例向學生展示整個課程的內容及每個章節的重難點知識,最大限度地激發學生的學習熱情和積極性,這樣不僅可以使學生對本課程有個大致的了解,使學生很好地掌握理論知識,還可以培養學生運用理論知識解決實際問題的能力,真正做到學以致用。

2.為學生總結知識框架

教師要采用科學的方法對教學內容進行整理,為學生總結知識框架,這樣便于學生自主學習。知識框架要由多個相互關聯的模塊構成,便于課程中多種知識的組合。

3.進行嚴格的訓練

由于數據課程知識較為抽象,對于一些難度較大,較難理解的知識一定要進行及時、嚴格的訓練,這樣可以很好地培養學生嚴謹的學習態度,在試題之中,教師要適當地考查學生對知識的深入理解情況,便于掌握學生的學習情況。

4.對疑難點知識的補充教學及總結

針對數據課程中某些重難點知識,教師一定要進行深入地剖析,并且可以根據實際情況對教材之中的原理部分進行轉化便于學生接受,還可以對教材中未提及的簡易算法等進行補充,使學生便于掌握、理解。

5.注重對學生能力的培養

數據課程具有較強的實踐性,在理論教學的過程中隱含了許多重要的技術知識,但教材中多是一筆帶過,使學生很難理解。針對這種情況,教師一定要對教材中沒有展開討論的重點技能性知識進行解析,以培養學生解決問題的能力。

二、解析課程設計對計算機教師的要求

課程設計主要是針對學生的學習能力進行的,教師一定要根據學生的實際情況及興趣愛好進行,要注意課題的難度,盡量控制在通過學生的努力可以完成的范圍內,既不要太難,也不要過于簡單。需要注意的是,計算機教師一定要對整個過程進行掌控,如果發現這個課題較難,學生花費了很長的時間也不能解決,教師就是及時進行指導,幫助學生渡過難關。因為,如果經過長時間的思考還沒有解決問題,學生的興趣和信心都會在一定程度上減弱,最終會出現消極心理,這非常不利于學生的發展;不僅如此,還要對數據結構課程的設計進行嚴格的驗收,嚴謹的對待學生的成績評定。在設計完成后,教師要進行現場評定,要充分地檢查各種數據,明確指出設計之中存在的缺陷,以便于學生形成良好的治學態度,此外,對于學生設計中的閃光點,教師也要及時肯定,不吝嗇鼓勵、表揚的語言,使學生感受到教師對其的期望感,激發起學生的學習動力。

通過對上文的論述可知,對數據結構課程設計進行探究具有重要的意義,對我國整體高校計算機教育事業的發展是大有裨益的。數據結構課程作為計算機技術與應用專業的基礎課程,對該專業學生的未來發展起到很大的作用,我們數據課程教師任重而道遠。盡管在當前的數據結構教育中還存在很多問題,在未來探索的道路上更是阻礙重重,但我堅信,天道酬勤,只要我們廣大高校計算機教育工作者恪盡職守,無私奉獻,不斷對數據結構課程進行探究,一定能夠有效緩解我國當前的教育現狀,為祖國培養出一批又批的綜合素質較高的計算機專業人才,最終為祖國的發展和社會的進步奉獻自己的一份力量。

參考文獻:

[1]任雪萍,王立波,趙葆華.融入PIC-CDIO理念的“數據結構”課程教學改革[J].計算機教育,2012(12).

[2]查建中.面向經濟全球化的工程教育改革戰略:兼談CDIO工程教育模式實施[J].計算機教育,2010(11).

數據結構范文第5篇

關鍵詞 軍隊院校 微課 教學設計

中圖分類號:G642 文獻標識碼:A

1課程背景

數據結構是計算機專業和部隊信息化相關專業的專業必修課。課程的目的是使學員能夠對程序構造其所包含的復雜數據集合進行深入了解。棧和隊列是數據結構課程中的一個重要章節,本文章以微課的形式對線性結構中棧的教學過程進行了設計。

在本次微課之前,已經對數據結構中的線性表章節內容進行了介紹,本次微課的授課知識點是特殊的線性表――“棧”。棧是一種相當重要的數據結構,在日常生活中應用相當廣泛。與線性表相比,棧規定了特殊的元素添加和刪除的方式,在操作上也與一般的線性表有所不同。所以需要在授課方式和課程設計上要想辦法引導學員學習,才能加深對棧的原理的理解。

由于本次微課面對的教學對象是軍校學員,相對于一般的地方大學學生,軍校學員有學習主動性,服從意識較強的特點,善于從部隊和生活中把握事物本質,所以本次微課要注意針對性,課程設計要有部隊特色。

2教學目標

本微課的教學目標是:理解棧的定義;理解棧的存儲結構和基本操作;掌握如何判斷棧的出棧序列是否正確;掌握使用棧完成進制位轉換算法。

其中,重點是棧的存儲結構和基本操作;難點是出棧序列分析。

3 教學方法及過程

課程的開始采用情景引入的方式,逐步引入講解的主題,引導學員去思考,激發學習興趣。課程的講授過程中,以動畫為“引”,講解為“導”,提供實例,引導學員對實例進行分析,發揮學員的主觀能動性,培養學員思考問題、分析問題和解決問題的能力。課程的總結中,巧妙地提煉重點、難點、注意點,激發學員繼續學習的熱情。講授過程分以下幾個環節:

3.1引出主題

由于本課程授課對象都是軍校學員,對槍械的使用和原理構造都比較熟悉且感興趣,為充分調動學員的學習積極性。首先以手槍的發展歷程作為開場白,提出問題給學員思考――第一次世界大戰期間彈匣式手槍已經相當普及,為什么軍官們還是喜歡使用左輪手槍呢?解答:從兩種手槍的裝填方式的分析,由于當時子彈制造水平落后質量很難保證,而彈匣式手槍必須按照先裝填的子彈后擊發的順序來進行射擊,如果一發子彈無法擊發就會導致后面子彈無法擊發從而貽誤戰機。接著引出今天要介紹的這種數據結構,一種類似彈匣一樣先進后出的數據結構――棧。

3.2棧的應用

用具體的實例來說明棧在軟件中的應用。比如我們在使用瀏覽器上網時,使用“后退”鍵來返回以前瀏覽過的網頁。還有很多類似的軟件,比如我們常用的Word、Photoshop等文檔或圖像編輯軟件,都會有撤銷(undo)的操作,這也是采用棧這種方式來實現的。在以上兩個實例的基礎上,分析并歸納出棧的定義:限定僅在表尾進行插入和刪除的線性表。

3.3棧的定義和操作

給出棧的ADT定義,明確對線性表的操作特性它都具備,但是由于它的特殊性所以將插入和刪除操作,改名為出棧(push)和入棧(pop)。以游標卡尺的游標運動方式,來解釋top指針在棧中的作用,播放動畫演示兩個操作進棧、出棧,以及在棧滿、棧空等狀態下top指針的變化情況。

3.4出棧序列分析

提出問題――是否最先進棧的元素就一定是最后出棧呢?答案是不一定。以最簡單的輸入序列1,2,3以動畫的方式舉例分析5種可能出現的出棧順序。然后以一道棧的試題來講解判別出棧序列的通用方法:若入棧序列是…Pi…Pj…Pk…,一定不存在這樣的出棧序列…Pk…Pi…Pj…。

3.5舉一反三,實際應用

進一步舉出實例一一十進制數轉成八進制。給出進制位轉換的公式,讓大家思考如何利用棧來實現對應算法。給出源程序同時,動畫實際演示算法執行的整個過程。請大家思考如何完成其他進制位的轉換。

3.6總結

最后提煉本課的重點、難點、注意點,給出課后練習題目,激發學員繼續學習的熱情。

4教學特點總結

(1)采用微課形式,適于部隊院校。軍隊院校學員集中管控,學習訓練任務重,除了課堂教學時間外,學員課后沒有時間同授課教員交流答疑。而“微課”主要是為了解決課堂教學中某個學科知識點,特別是教學中的重點、難點等內容,“微課”容量小,通常時間控制在15~20分鐘之內,所以非常適合軍校學員自主學習。

(2)注意學員情感體驗,貼近部隊和生活實際。筆者努力將數據結構課程知識點和部隊實際結合進行了一些嘗試,本次微課通過精心設計,從學員常用的手槍射擊原理的具體情境出發,引出主題,對實際生活中常用的軟件中棧的應用展開教學,貼近部隊實際和學員的日常生活,提高了學員的學習積極性和主動性。

(3)教學設計合理,教學效果明顯。課程在講授過程中,重點、難點分明,將棧的運用分成兩步, 通過常見的棧的例題分析棧的出棧序列加深學員對知識點的理解,提高解題能力; 通過進制位的轉換的實例,通過解決實際問題,使學員獲得了成就感和滿足感,提高學員的基本編程素養,提高了學員分析和解決問題的能力。

參考文獻

主站蜘蛛池模板: 双辽市| 湛江市| 桐柏县| 建宁县| 墨江| 沁阳市| 临澧县| 孝感市| 麻栗坡县| 左云县| 东莞市| 冷水江市| 永泰县| 巨野县| 南华县| 化州市| 靖宇县| 景洪市| 大竹县| 那坡县| 姜堰市| 富蕴县| 道孚县| 吉首市| 龙游县| 隆化县| 安吉县| 石楼县| 神木县| 当阳市| 沙河市| 米脂县| 启东市| 禄劝| 马鞍山市| 淮安市| 昭觉县| 井陉县| 永宁县| 从化市| 区。|