日韩有码亚洲专区|国产探花在线播放|亚洲色图双飞成人|不卡 二区 视频|东京热av网一区|玖玖视频在线播放|AV人人爽人人片|安全无毒成人网站|久久高清免费视频|人人人人人超碰在线

首頁 > 文章中心 > 數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇數(shù)據(jù)結(jié)構(gòu)范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

數(shù)據(jù)結(jié)構(gòu)范文第1篇

一、需求分析

1、 程序所實現(xiàn)的功能;

2、 程序的輸入,包含輸入的數(shù)據(jù)格式和說明;

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

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

5、 合作人及其分工

二、設(shè)計說明

1、 主要的數(shù)據(jù)結(jié)構(gòu)設(shè)計說明;

2、 程序的主要流程圖;

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

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

5、 合作人設(shè)計分工

三、上機結(jié)果及體會

1、 合作人編碼分工

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

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

4、 上機過程中出現(xiàn)的問題及其解決方案;

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

6、 程序中可以擴充的功能及設(shè)計實現(xiàn)假想;

數(shù)據(jù)結(jié)構(gòu)范文第2篇

關(guān)鍵詞:鏈式存儲結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu);存儲結(jié)構(gòu);教學(xué)方法

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

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

1鏈式存儲結(jié)構(gòu)的概念

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

1.1結(jié)構(gòu)

結(jié)構(gòu)指數(shù)據(jù)元素之間的一種或多種關(guān)系,關(guān)系可能是線性的,也可能是非線性的。常見的基本結(jié)構(gòu)分為四類,分別是集合、線性表、樹和圖。當(dāng)然,通常所說的關(guān)系是指數(shù)據(jù)元素之間的邏輯關(guān)系即數(shù)據(jù)的邏輯結(jié)構(gòu)。簡單地理解,結(jié)構(gòu)就是關(guān)系。

1.2存儲結(jié)構(gòu)

為了在計算機中實現(xiàn)操作,除了分析數(shù)據(jù)元素之間的關(guān)系即得到數(shù)據(jù)的邏輯結(jié)構(gòu)外,還要考慮它們在計算機中如何存儲。數(shù)據(jù)元素和關(guān)系在計算機中的表示稱為數(shù)據(jù)的存儲結(jié)構(gòu),也稱為物理結(jié)構(gòu)。簡單地理解,存儲結(jié)構(gòu)就是數(shù)據(jù)在計算機中的存儲方式。

1.3鏈式存儲結(jié)構(gòu)

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

2鏈式存儲結(jié)構(gòu)的特點

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

2.1什么是鏈

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

2.2優(yōu)點

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

2.3缺點

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

3鏈式存儲結(jié)構(gòu)的定義

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

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

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

struct LNode*L;

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

4鏈式存儲結(jié)構(gòu)的操作

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

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

相對單鏈表來說,其它的鏈式存儲結(jié)構(gòu)可能在指針域或數(shù)據(jù)域擴充后有更為復(fù)雜的操作。然而,只要將最基本的單鏈表的插入和刪除操作掌握好,就可以在實現(xiàn)其它鏈式存儲結(jié)構(gòu)操作時輕松應(yīng)對。

數(shù)據(jù)結(jié)構(gòu)范文第3篇

關(guān)鍵詞: 《數(shù)據(jù)結(jié)構(gòu)》 教學(xué)方法 改進 實踐

《數(shù)據(jù)結(jié)構(gòu)》是研究非數(shù)值計算的程序設(shè)計問題中計算機操作對象(數(shù)據(jù)),以及它們之間的關(guān)系(結(jié)構(gòu))和操作(算法)等的一門科學(xué)。它不僅是一般程序設(shè)計的基礎(chǔ),而且是設(shè)計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)?!稊?shù)據(jù)結(jié)構(gòu)》課程是計算機及相關(guān)學(xué)科的一門重要的專業(yè)基礎(chǔ)課,也是一門鍛煉程序設(shè)計能力的實踐課程。然而,由于以下原因,這門課學(xué)習(xí)起來相當(dāng)困難。

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

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

(3)教學(xué)內(nèi)容較多,且相互聯(lián)系,沒有明顯的重點次重點;

(4)數(shù)據(jù)結(jié)構(gòu)算法比較靈活,傳統(tǒng)教學(xué)方法不利于拓展學(xué)生思路;

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

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

1.講好第一堂課,調(diào)動學(xué)生的學(xué)習(xí)興趣

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

2.解決學(xué)生對C語言掌握的不足

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

3.教學(xué)內(nèi)容的歸納提煉

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

4.教學(xué)方法的改進

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

5.加強實踐環(huán)節(jié)

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

參考文獻:

[1]嚴尉敏,吳偉民.數(shù)據(jù)結(jié)構(gòu) C語言描述.清華大學(xué)出版社,1997.

數(shù)據(jù)結(jié)構(gòu)范文第4篇

關(guān)鍵詞:課程內(nèi)容;結(jié)構(gòu)分析;教師素質(zhì);學(xué)習(xí)能力

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

一、數(shù)據(jù)課程內(nèi)容及體系結(jié)構(gòu)分析

數(shù)據(jù)結(jié)構(gòu)是計算機科學(xué)與應(yīng)用專業(yè)的基礎(chǔ)課程,該課程內(nèi)容主要是介紹了軟件設(shè)計中最常見的數(shù)據(jù)結(jié)構(gòu)及其儲存結(jié)構(gòu),本課程的難點是數(shù)據(jù)組織方面的動態(tài)儲存結(jié)構(gòu)及遞歸技術(shù)。筆者認為,可以從以下幾個方面進行教學(xué):

1.做到學(xué)以致用

在進行數(shù)據(jù)課程教學(xué)的過程中,教師可以結(jié)合實例向?qū)W生展示整個課程的內(nèi)容及每個章節(jié)的重難點知識,最大限度地激發(fā)學(xué)生的學(xué)習(xí)熱情和積極性,這樣不僅可以使學(xué)生對本課程有個大致的了解,使學(xué)生很好地掌握理論知識,還可以培養(yǎng)學(xué)生運用理論知識解決實際問題的能力,真正做到學(xué)以致用。

2.為學(xué)生總結(jié)知識框架

教師要采用科學(xué)的方法對教學(xué)內(nèi)容進行整理,為學(xué)生總結(jié)知識框架,這樣便于學(xué)生自主學(xué)習(xí)。知識框架要由多個相互關(guān)聯(lián)的模塊構(gòu)成,便于課程中多種知識的組合。

3.進行嚴格的訓(xùn)練

由于數(shù)據(jù)課程知識較為抽象,對于一些難度較大,較難理解的知識一定要進行及時、嚴格的訓(xùn)練,這樣可以很好地培養(yǎng)學(xué)生嚴謹?shù)膶W(xué)習(xí)態(tài)度,在試題之中,教師要適當(dāng)?shù)乜疾閷W(xué)生對知識的深入理解情況,便于掌握學(xué)生的學(xué)習(xí)情況。

4.對疑難點知識的補充教學(xué)及總結(jié)

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

5.注重對學(xué)生能力的培養(yǎng)

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

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

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

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

參考文獻:

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

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

數(shù)據(jù)結(jié)構(gòu)范文第5篇

關(guān)鍵詞 軍隊院校 微課 教學(xué)設(shè)計

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

1課程背景

數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)和部隊信息化相關(guān)專業(yè)的專業(yè)必修課。課程的目的是使學(xué)員能夠?qū)Τ绦驑?gòu)造其所包含的復(fù)雜數(shù)據(jù)集合進行深入了解。棧和隊列是數(shù)據(jù)結(jié)構(gòu)課程中的一個重要章節(jié),本文章以微課的形式對線性結(jié)構(gòu)中棧的教學(xué)過程進行了設(shè)計。

在本次微課之前,已經(jīng)對數(shù)據(jù)結(jié)構(gòu)中的線性表章節(jié)內(nèi)容進行了介紹,本次微課的授課知識點是特殊的線性表――“?!薄J且环N相當(dāng)重要的數(shù)據(jù)結(jié)構(gòu),在日常生活中應(yīng)用相當(dāng)廣泛。與線性表相比,棧規(guī)定了特殊的元素添加和刪除的方式,在操作上也與一般的線性表有所不同。所以需要在授課方式和課程設(shè)計上要想辦法引導(dǎo)學(xué)員學(xué)習(xí),才能加深對棧的原理的理解。

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

2教學(xué)目標

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

其中,重點是棧的存儲結(jié)構(gòu)和基本操作;難點是出棧序列分析。

3 教學(xué)方法及過程

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

3.1引出主題

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

3.2棧的應(yīng)用

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

3.3棧的定義和操作

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

3.4出棧序列分析

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

3.5舉一反三,實際應(yīng)用

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

3.6總結(jié)

最后提煉本課的重點、難點、注意點,給出課后練習(xí)題目,激發(fā)學(xué)員繼續(xù)學(xué)習(xí)的熱情。

4教學(xué)特點總結(jié)

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

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

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

參考文獻

相關(guān)期刊更多

數(shù)據(jù)

省級期刊 審核時間1個月內(nèi)

北京市統(tǒng)計局

大數(shù)據(jù)

統(tǒng)計源期刊 審核時間1個月內(nèi)

工業(yè)和信息化部

數(shù)據(jù)法學(xué)

部級期刊 審核時間1個月內(nèi)

中國人民公安大學(xué)法學(xué)院