董思妤
摘 要: 《數(shù)據(jù)結(jié)構(gòu)》是一門(mén)比較抽象、理論性強(qiáng)、難度較大又極其重要的課程,通過(guò)高效、優(yōu)質(zhì)的課堂提問(wèn),對(duì)于學(xué)員邏輯思維能力和創(chuàng)造力的培養(yǎng)有非常重要的作用。本文從教學(xué)實(shí)踐出發(fā),通過(guò)具體教學(xué)實(shí)例,探討如何提高學(xué)員的思維能力。
關(guān)鍵詞: 《數(shù)據(jù)結(jié)構(gòu)》 思維能力 優(yōu)質(zhì)提問(wèn)教學(xué)法 教學(xué)實(shí)踐 教學(xué)方法
引言
《數(shù)據(jù)結(jié)構(gòu)》是武警初級(jí)指揮生長(zhǎng)干部四年制“學(xué)歷教育合訓(xùn)”本科學(xué)員指揮信息系統(tǒng)工程專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)必修課。對(duì)學(xué)員信息素質(zhì)的培養(yǎng)、信息系統(tǒng)的開(kāi)發(fā)等技能具有一定的指導(dǎo)作用,訓(xùn)練學(xué)員分析和解決問(wèn)題的能力,使學(xué)員了解數(shù)據(jù)結(jié)構(gòu)在解決現(xiàn)實(shí)問(wèn)題中的重要應(yīng)用,培養(yǎng)學(xué)員探索精神,提高學(xué)員綜合素質(zhì),實(shí)現(xiàn)知識(shí)、能力與素質(zhì)協(xié)調(diào)發(fā)展,為培養(yǎng)具有較強(qiáng)創(chuàng)新能力的高素質(zhì)新型軍事人才奠定基礎(chǔ)。
1.優(yōu)質(zhì)提問(wèn)教學(xué)法
課堂提問(wèn)是教學(xué)中的一個(gè)重要環(huán)節(jié),通過(guò)提問(wèn),可以提高學(xué)員注意力,激發(fā)學(xué)員積極思考,使課堂氣氛變得活躍,進(jìn)而提高學(xué)員的學(xué)習(xí)興趣;通過(guò)提問(wèn),可促使學(xué)員對(duì)已學(xué)知識(shí)進(jìn)行回顧,對(duì)未學(xué)的知識(shí)進(jìn)行探索,并將各知識(shí)點(diǎn)串聯(lián)起來(lái),形成更完整、更具體的知識(shí)體系[1]。為了提高學(xué)員的思維能力,培養(yǎng)學(xué)員解決問(wèn)題的能力,教員在授課時(shí)就要有意識(shí)地引導(dǎo)學(xué)員思考,通過(guò)教員的引導(dǎo)使學(xué)員形成自己的思維過(guò)程。因此,教員應(yīng)掌握一定的課堂提問(wèn)技巧,因?yàn)椴缓侠淼奶釂?wèn)反而會(huì)影響教學(xué)效果。
優(yōu)質(zhì)提問(wèn)教學(xué)法指教員一定要科學(xué)設(shè)問(wèn)。提出的問(wèn)題需要掌握一定的技巧,問(wèn)題要設(shè)置在關(guān)鍵之處,如在回顧舊知識(shí)引入新課及重要知識(shí)點(diǎn)之間的銜接時(shí),都可以設(shè)問(wèn)。課堂設(shè)問(wèn)的難易程度要適中,以能激發(fā)學(xué)員的學(xué)習(xí)興趣為前提。教員在設(shè)置問(wèn)題時(shí),應(yīng)循序漸進(jìn),通過(guò)問(wèn)題的層層深入,讓學(xué)員掌握理解問(wèn)題本質(zhì)的思維方法,使學(xué)員分析問(wèn)題的能力得以提高。
2.教學(xué)范例:線性表的單鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
“線性表的單鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)”教學(xué)內(nèi)容安排在“線性表的順序存儲(chǔ)結(jié)構(gòu)(包含特殊線性表?xiàng):完?duì)列)”之后[2],首先回顧線性表的順序存儲(chǔ)結(jié)構(gòu),用類(lèi)比法引入新課。將在座每一位同學(xué)類(lèi)比為數(shù)據(jù)元素,將教室每一個(gè)座位類(lèi)比為計(jì)算機(jī)的存儲(chǔ)單元,前面學(xué)習(xí)的順序存儲(chǔ)方式就好比每一位同學(xué)按學(xué)號(hào)依次就座,座位是固定的,而今天要學(xué)習(xí)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),可不按順序就座,只要有空位就可以坐,讓每一位同學(xué)記住學(xué)號(hào)在你后面的下一位同學(xué)的位置即可。單鏈表只能單方向查找,就好比我們經(jīng)常看的諜戰(zhàn)片,你只知道你的下線,卻永遠(yuǎn)不知道你的上線是誰(shuí)。從生活中的事例引入,很快就讓學(xué)員明白了,而不會(huì)覺(jué)得很抽象?;氐綌?shù)據(jù)結(jié)構(gòu)中,鏈?zhǔn)酱鎯?chǔ)將每一個(gè)數(shù)據(jù)元素看做一個(gè)結(jié)點(diǎn),每一個(gè)結(jié)點(diǎn)的存儲(chǔ)單元不需要是連續(xù)的,每一個(gè)結(jié)點(diǎn)中存放它后繼結(jié)點(diǎn)的地址。第一個(gè)結(jié)點(diǎn)的地址通過(guò)頭結(jié)點(diǎn)獲取,之后每一個(gè)結(jié)點(diǎn)都可以通過(guò)它的前驅(qū)結(jié)點(diǎn)找到。
這時(shí),提出第一個(gè)問(wèn)題:(1)在一個(gè)已知結(jié)點(diǎn)之前插入刪除數(shù)據(jù)容易呢?還是在已知結(jié)點(diǎn)之后插入刪除數(shù)據(jù)容易?這時(shí)學(xué)員就會(huì)思考如果已知結(jié)點(diǎn)p,那么p的后繼結(jié)點(diǎn)地址可輕松地通過(guò)p->next獲取,如果在p結(jié)點(diǎn)后插入結(jié)點(diǎn)s的話很容易,只需要s->next=p->next;p->next=s;重新鏈接一下指針就可以了,時(shí)間復(fù)雜度為O(1)。而p的前驅(qū)結(jié)點(diǎn)能不能直接獲取到呢?由前面所學(xué)的知識(shí)學(xué)員很快就明白了,不行,只能通過(guò)頭指針L依次從頭結(jié)點(diǎn)開(kāi)始獲取,q=L->next;while(q->next!=p)q=q->next;此時(shí)q指向的結(jié)點(diǎn)就是p的前驅(qū)結(jié)點(diǎn),查找結(jié)點(diǎn)的時(shí)間復(fù)雜度為O(n),再通過(guò)q->next=s;s->next=p,就可以成功地在p結(jié)點(diǎn)前插入結(jié)點(diǎn)s了。而刪除操作亦然。引導(dǎo)學(xué)員分析完后,學(xué)員在認(rèn)真思考下,很快就能給出答案:當(dāng)然是在已知結(jié)點(diǎn)之后插入刪除數(shù)據(jù)容易了。
掌握了這部分知識(shí)點(diǎn)之后,接著拋出第二個(gè)問(wèn)題:(2)對(duì)于棧這種操作受限的線性表,它只能在一端進(jìn)行插入和刪除,它的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)—鏈棧,結(jié)點(diǎn)的插入和刪除操作應(yīng)該放在鏈?zhǔn)走€是鏈尾?教員再引導(dǎo)學(xué)員通過(guò)前面所學(xué)的知識(shí)思考:如果在鏈?zhǔn)撞僮?,就?yīng)該是在頭結(jié)點(diǎn)之后插入和刪除,而頭結(jié)點(diǎn)的地址容易獲取嗎?顯而易見(jiàn),通過(guò)頭指針可以直接獲取到,時(shí)間復(fù)雜度為O(1),這就轉(zhuǎn)化為第一個(gè)問(wèn)題中的已知結(jié)點(diǎn)(頭結(jié)點(diǎn)L->next)之后插入和刪除的問(wèn)題。而若在鏈尾操作,插入結(jié)點(diǎn)需要獲取最后一個(gè)結(jié)點(diǎn)的地址,刪除最后一個(gè)結(jié)點(diǎn)需要獲取倒數(shù)第二個(gè)結(jié)點(diǎn)的地址,這些都需要從頭指針處開(kāi)始查找,時(shí)間復(fù)雜度為O(n)。這時(shí)學(xué)員很快就能給出答案:對(duì)于鏈棧,結(jié)點(diǎn)的插入和刪除操作應(yīng)該放在鏈?zhǔn)?。并且引?dǎo)學(xué)員依照第一個(gè)問(wèn)題寫(xiě)出程序代碼。
對(duì)于鏈棧的操作大家明白了,請(qǐng)思考最后一個(gè)問(wèn)題:(3)對(duì)于隊(duì)列這種操作受限的線性表,它只能在一端進(jìn)行插入另一端進(jìn)行刪除,它的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)—鏈隊(duì)列,結(jié)點(diǎn)的插入和刪除操作應(yīng)該放在鏈?zhǔn)走€是鏈尾呢?首先要讓學(xué)員明白鏈隊(duì)列的頭指針與鏈棧的不同,是一結(jié)構(gòu)體,其中Q.front始終指向頭結(jié)點(diǎn),Q.rear始終指向尾結(jié)點(diǎn),如圖1。
若在鏈?zhǔn)讋h除鏈尾插入,則引導(dǎo)學(xué)員分析,學(xué)員通過(guò)前面所學(xué)知識(shí),很容易就能寫(xiě)出實(shí)現(xiàn)代碼。
鏈?zhǔn)讋h除(出隊(duì)):p=Q.front->next;Q.front->next=p->next;free(p);考慮當(dāng)只剩下一個(gè)結(jié)點(diǎn)刪除后隊(duì)列為空的情況:if(Q.rear==p);Q.rear=Q.front;free(p);時(shí)間復(fù)雜度為O(1);
鏈尾插入(入隊(duì)):Q.rear->next=S;Q.rear=S;時(shí)間復(fù)雜度為O(1)。
反過(guò)來(lái),若在鏈?zhǔn)撞迦腈溛矂h除,則讓學(xué)員自己分析。
鏈?zhǔn)撞迦耄ㄈ腙?duì)):與鏈棧操作相同。S->next=Q.front->next;Q.front->next=S;時(shí)間復(fù)雜度為O(1)。
鏈尾刪除(出隊(duì)):即是要?jiǎng)h除Q.rear指向的結(jié)點(diǎn),刪除后Q.rear指向前驅(qū)結(jié)點(diǎn)。讓學(xué)員思考該怎么做,Q.rear的前驅(qū)結(jié)點(diǎn)地址如何獲取?這時(shí)學(xué)員馬上就會(huì)想到只能從Q.front處開(kāi)始查找獲取,時(shí)間復(fù)雜度為O(n)。隨后讓學(xué)員自己寫(xiě)出實(shí)現(xiàn)代碼。
最后,學(xué)員給出答案:鏈隊(duì)列出隊(duì)在鏈?zhǔn)?,入?duì)在鏈尾比較好。
以上這三個(gè)問(wèn)題是將不同章節(jié)的知識(shí)點(diǎn)串聯(lián)起來(lái),對(duì)授課內(nèi)容進(jìn)行重組,所提出的問(wèn)題環(huán)環(huán)相扣,由易到難、循序漸進(jìn)。不僅讓學(xué)員有效掌握了對(duì)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)操作的相關(guān)知識(shí),而且啟發(fā)了學(xué)員的思維,調(diào)動(dòng)了學(xué)員學(xué)習(xí)的積極性,鍛煉了學(xué)員的邏輯思維和獨(dú)立思考問(wèn)題的能力。
3.結(jié)語(yǔ)
本文通過(guò)具體教學(xué)案例,探討了以教員充分引導(dǎo)和啟發(fā)學(xué)員思維相結(jié)合為主要特征的優(yōu)質(zhì)提問(wèn)教學(xué)法。通過(guò)構(gòu)建“問(wèn)題鏈”,創(chuàng)設(shè)問(wèn)題情境,恰當(dāng)?shù)爻尸F(xiàn)問(wèn)題,激發(fā)學(xué)員的興趣,激發(fā)學(xué)員參與解決問(wèn)題的欲望,調(diào)動(dòng)他們主動(dòng)探索問(wèn)題的積極性,對(duì)學(xué)員思維能力的培養(yǎng)起到重要作用,對(duì)教員課堂教學(xué)質(zhì)量的提高也起到積極作用。
參考文獻(xiàn):
[1]嚴(yán)太山,郭觀七,李文彬.課堂設(shè)問(wèn)的技巧及其在《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)中的應(yīng)用[J].湖南理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2015(3):81-83.
[2]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].清華大學(xué)出版社,2007.