心得體會是對個人經(jīng)歷和感悟的沉淀與總結(jié)。寫心得體會時,要注意語言的簡練、準(zhǔn)確和生動。以下是小編為大家收集的心得體會范文,僅供參考,希望能給大家?guī)韱l(fā)和思考。通過閱讀這些范文,我們可以學(xué)習(xí)他人的心得體會寫作技巧和經(jīng)驗,從而在自己的寫作中不斷提升。每一篇范文都有其獨到之處和不一樣的觀點,可以幫助我們開闊思維,發(fā)現(xiàn)更多的想法和感悟。大家一起來看看,相信一定會有所收獲和啟發(fā)。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇一
課程設(shè)計的實質(zhì)是對人類已有知識經(jīng)驗進行有效選擇和重組,其面向未來社會成員的生存和發(fā)展,并由此展現(xiàn)價值和地位。下面是本站為大家?guī)淼臄?shù)據(jù)結(jié)構(gòu)課程設(shè)計
心得體會
,希望可以幫助大家。
這次數(shù)據(jù)庫課程設(shè)計用的是microsoft visual foxpro 6.0 ,而我們平時用的microsoft sql server 20xx,雖然對vfp完全陌生,但在老師的指引下,我們近乎完美的完成了課程設(shè)計。當(dāng)然過程是艱辛的。
面對著完全陌生的操作環(huán)境vfp,許多同學(xué)開始埋怨,要求用sql,用我們學(xué)過的asp等來完成設(shè)計。但我們慢慢發(fā)現(xiàn)用vfp做課程設(shè)計其實很有優(yōu)勢,于是它的這個優(yōu)勢激發(fā)了我們?nèi)チ私馑挠?。老師先將vfp中基本的建數(shù)據(jù)庫,建表以及建表單等向我們演示了一遍,我們也仿照著做了,發(fā)覺并不是很難。但想到這次課程設(shè)計做的是一套學(xué)生學(xué)籍和成績管理系統(tǒng),我們又開始茫然了。那天,老師給我們看了一段可以讓文字循環(huán)移動的代碼,這使我們產(chǎn)生了好奇心理,有了快速了解它的沖動。因為用面向?qū)ο蟮恼Z言做特效,這還是第一次。下課之后我把那段我們不了解的語言寫的特效代碼發(fā)到了vfp論壇上請人幫忙解釋,最后我們完全理解了那段代碼的意思。
這次課程設(shè)計我們克服了炎熱的天氣(學(xué)校機房之前沒裝空調(diào)……后來設(shè)計完才裝……),也克服對新知識的恐懼感以及畏難情緒。我們懂得了團隊合作的重要性,也懂得了團隊中如何交流、如何分工,如何集體討論難點。我們充分利用了網(wǎng)絡(luò)資源(技術(shù)論壇,共享的實例等)。
我們喜歡這次課程設(shè)計的感覺,喜歡編程,喜歡團隊交流。
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現(xiàn)了一個雙向圖信息的存儲。
對整個程序而言,dijkstra算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。
4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的程序,可是好多處的錯誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯誤,但是程序還是得繼續(xù)下去,我多次請教了老師和同學(xué),逐漸能自己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的。現(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二
“數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計”是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫程序的能力,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
當(dāng)初拿到這次課程設(shè)計題目時,似乎無從下手,但是經(jīng)過分析可知,對于簡單文本編輯器來說功能有限,不外乎創(chuàng)作文本、顯示文本、統(tǒng)計文本中字母—數(shù)字—空格—特殊字符—文本總字?jǐn)?shù)、查找、刪除及插入這幾項功能。于是,我進行分模塊進行編寫程序。雖然每個模塊程序并不大,但是每個模塊都要經(jīng)過一番思考才能搞清其算法思想,只要有了算法思想,再加上c程序語言基礎(chǔ),基本完成功能,但是,每個模塊不可能一次完成而沒有一點錯誤,所以,我給自己定了一個初級目標(biāo):用c語言大體描述每個算法,然后經(jīng)調(diào)試后改掉其中明顯的錯誤,并且根據(jù)調(diào)試結(jié)果改正一些算法錯誤,當(dāng)然,這一目標(biāo)實現(xiàn)較難。最后,經(jīng)過反復(fù)思考,看一下程序是否很完善,如果能夠達到更完善當(dāng)然最好。并非我們最初想到的算法就是最好的算法,所以,有事我們會而不得不在編寫途中終止換用其他算法,但是,我認(rèn)為這不是浪費時間,而是一種認(rèn)識過程,在編寫程序中遇到的問題會為我們以后編寫程序積累經(jīng)驗,避免再犯同樣的錯誤。但是,有的方法不適用于這個程序,或許會適用于另外一個程序。所以,探索的過程是成長的過程,是為成功做的鋪墊。經(jīng)過努力后獲得成功,會更有成就感。
在課程設(shè)計過程中通過獨立解決問題,首先分析設(shè)計題目中涉及到的數(shù)據(jù)類型,在我們學(xué)習(xí)的數(shù)據(jù)存儲結(jié)構(gòu)中不外乎線性存儲結(jié)構(gòu)及非線性存儲結(jié)構(gòu),非線性存儲結(jié)構(gòu)中有樹型,集合型,圖型等存儲結(jié)構(gòu),根據(jù)數(shù)據(jù)類型設(shè)計數(shù)據(jù)結(jié)點類型。然后根據(jù)設(shè)計題目的主要任務(wù),設(shè)計出程序大體輪廓(包括子函數(shù)和主函數(shù)),然后對每個子函數(shù)進行大體設(shè)計,過程中錯誤在所難免,所以要經(jīng)過仔細(xì)探索,對每個函數(shù)進行改進。
程序基本完成后,功能雖然齊全,但是程序是否完善(例如,輸入數(shù)據(jù)時是否在其范圍之內(nèi),所以加入判斷語句是很有必要的)還需運行測試多次,如有發(fā)現(xiàn)應(yīng)該對其進行改善,當(dāng)然要在力所能及的前提下。
課程設(shè)計過程雖然短暫,但是使我深刻理解數(shù)據(jù)結(jié)構(gòu)和算法課程對編程的重要作用,還有“數(shù)據(jù)結(jié)構(gòu)與算法”還提供了一些常用的基本算法思想及算法的編寫程序。通過獨立完成設(shè)計題目,使我系統(tǒng)了解編程的基本步驟,提高分析和解決實際問題的能力。通過實踐積累經(jīng)驗,才能有所創(chuàng)新。正所謂,良好的基礎(chǔ)決定上層建筑。只有基本功做好了,才有可能做出更好的成果。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇三
做了一個星期的程序設(shè)計終于做完了,在這次程序設(shè)計課中,真是讓我獲益匪淺,我突然發(fā)現(xiàn)寫程序還挺有意思的。由于上學(xué)期的c語言跟這學(xué)期的數(shù)據(jù)結(jié)構(gòu)都算不上真正的懂,對于書上的稍微難點的知識就是是而非的,所以我只是對老師的程序理解,我也試著去改變了一些變量,自己也盡量多的去理解老師做程序的思路。當(dāng)我第一天坐在那里的時候,我就不知道該做些什么,后來我只有下來自己看了一遍書來熟悉下以前學(xué)過的知識。
通過這次的程序設(shè)計,發(fā)現(xiàn)一個程序設(shè)計就是算法與數(shù)據(jù)結(jié)構(gòu)的結(jié)合體,自己也開始對程序產(chǎn)生了前所未有的興趣,以前偷工減料的學(xué)習(xí)也不可能一下子寫出一個程序出來,于是我就認(rèn)真看老師寫的程序,發(fā)現(xiàn)我們看懂了一個程序其實不難,難的是對于一個程序的思想的理解,我們要掌握一個算法,不僅僅限于讀懂,主要的是要理解老師的思路,學(xué)習(xí)老師的解決問題的'方法。這次試驗中,我發(fā)現(xiàn)書本上的知識是一個基礎(chǔ),但是我基礎(chǔ)都沒掌握,更別說寫出一個整整的程序了。自己在寫程序的時候,也發(fā)現(xiàn)自己的知識太少了,特別是基礎(chǔ)知識很多都是模模糊糊的一個概念,沒有落實到真正的程序,所以自己寫的時候也感到萬分痛苦,基本上涉及一個知識我就會去看看書,對于書本上的知識沒掌握好。在飯后閑暇時間我也總結(jié)了一下,自己以前上課也認(rèn)真的聽了,但是還是寫不出來,這主要歸結(jié)于自己的練習(xí)太少了,而且也總是半懂就不管了。在改寫老師的程序中也出現(xiàn)了很多的問題,不斷的修改就是不斷的學(xué)習(xí)過程,當(dāng)我們?nèi)硇牡耐度肫渲袝r,實際上是一件很有樂趣的事情。對于以后的學(xué)習(xí)有了幾點總結(jié):
第二、各種常用的排序算法,如冒泡排序、堆排序……,這些
是必考的內(nèi)容,分?jǐn)?shù)不會少于20%;
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇四
《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
接下來就跟本站小編一起去了解一下關(guān)于數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
心得體會
吧!
決問題和在老師的幫助下一步一步慢慢的正確運行程序, 決問題和在老師的幫助下一步一步慢慢的正確運行程序,終 于完成了這次課程設(shè)計, 于完成了這次課程設(shè)計,雖然這次課程設(shè)計結(jié)束了但是總覺 得自已懂得的知識很是不足,學(xué)無止境, 得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努 力深入的學(xué)習(xí)。 力深入的學(xué)習(xí)。
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用 edges[i][j]=up 和 edges[j][i]=up 就能實現(xiàn)了一個雙向圖信息的存儲。對整個程序而言,dijkstra 算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c 語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include 頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇五
陳康蔭080401200708級計科系計本(2)班
完成了這次的二元多項式加減運算問題的課程設(shè)計后,我的心得體會很多,細(xì)細(xì)梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當(dāng)其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式b的所有項取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗及體會
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細(xì)節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇六
專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇七
完成了這次的二元多項式加減運算問題的課程設(shè)計后,我的心得體會很多,細(xì)細(xì)梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當(dāng)其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式b的所有項取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗及體會
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細(xì)節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇八
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的`奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現(xiàn)了一個雙向圖信息的存儲。
對整個程序而言,dijkstra算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。
4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的程序,可是好多處的錯誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯誤,但是程序還是得繼續(xù)下去,我多次請教了老師和同學(xué),逐漸能自己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇九
這次課程設(shè)計的心得體會通過實習(xí)我的收獲如下:
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。從剛開始得覺得很難,到最后把這個做出來,付出了很多,也得到了很多,以前總以為自己對編程的地方還不行,現(xiàn)在,才發(fā)現(xiàn)只要認(rèn)真做,沒有什么不可能。
編程時要認(rèn)真仔細(xì),出現(xiàn)錯誤要及時找出并改正,(其中對英語的要求也體現(xiàn)出來了,因為它說明錯誤的時候都是英語)遇到問題要去查相關(guān)的資料。反復(fù)的調(diào)試程序,最好是多找?guī)讉€同學(xué)來對你的程序進行調(diào)試并聽其對你的程序的建議,在他們不知道程序怎么寫的時候完全以一個用戶的身份來用對你的用戶界面做一些建議,正所謂當(dāng)局者迷旁觀者清,把各個注意的問題要想到;同時要形成自己的編寫程序與調(diào)試程序的風(fēng)格,從每個細(xì)節(jié)出發(fā),不放過每個知識點,注意與理論的聯(lián)系和理論與實踐的差別。另外,要注意符號的使用,注意對字符處理,特別是對指針的使用很容易出錯且調(diào)試過程是不會報錯的,那么我們要始終注意指針的初始化不管它怎么用以免不必要麻煩。
通過近兩周的學(xué)習(xí)與實踐,體驗了一下離開課堂的學(xué)習(xí),也可以理解為一次實踐與理論的很好的連接。特別是本組所做的題目都是課堂上所講的例子,在實行之的過程中并不是那么容易事讓人有一種紙上談兵的體會,正所謂紙上得來終覺淺絕知此事要躬行。實訓(xùn)過程中讓我們對懂得的知識做了進一步深入了解,讓我們的理解與記憶更深刻,對不懂的知識與不清楚的東西也做了一定的了解,也形成了一定的個人做事風(fēng)格。
通過這次課程設(shè)計,讓我對一個程序的數(shù)據(jù)結(jié)構(gòu)有更全面更進一步的認(rèn)識,根據(jù)不同的需求,采用不同的數(shù)據(jù)存儲方式,不一定要用棧,二叉樹等高級類型,有時用基本的一維數(shù)組,只要運用得當(dāng),也能達到相同的效果,甚至更佳,就如這次的課程設(shè)計,通過用for的多重循環(huán),舍棄多余的循環(huán),提高了程序的運行效率。在編寫這個程序的過程中,我復(fù)習(xí)了之前學(xué)的基本語法,哈弗曼樹最小路徑的求取,哈弗曼編碼及譯碼的應(yīng)用范圍,程序結(jié)構(gòu)算法等一系列的問題它使我對數(shù)據(jù)結(jié)構(gòu)改變了看法。在這次設(shè)計過程中,體現(xiàn)出自己單獨設(shè)計模具的能力以及綜合運用知識的能力,體會了學(xué)以致用、突出自己勞動成果的喜悅心情,也從中發(fā)現(xiàn)自己平時學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十
在兩周的學(xué)習(xí)和實踐過程中,通過解決學(xué)生搭配問題這一實際問題,讓我對循環(huán)隊列有了更深的了解,對數(shù)據(jù)結(jié)構(gòu)也產(chǎn)生了更加濃厚的興趣,同時也是對我解決實際問題能力的一次提升。
記得王教授給我們上課時就要不斷的通過走算法的方式,掌握所學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)、算法等,而上機則能進一步鞏固自己所學(xué)的知識、提高自己的學(xué)習(xí)能力。在上機的同時也改正了自己對某些算法的錯誤使用,使自己能在通過程序解決問題時抓住關(guān)鍵算法,能夠很好的夠造出解決問題的數(shù)據(jù)結(jié)構(gòu)、算法的設(shè)計思想和流程圖,并用c語言描繪出關(guān)鍵算法。
首先對于這次的課程設(shè)計題目而言,主要是對隊列這一知識點的運用。首先是對問題的分析,明白題目的具體要求,即將現(xiàn)實生活中的舞會搭配問題,用鏈隊列這一數(shù)據(jù)結(jié)構(gòu)描繪出來。用兩個鏈隊列boy和girl分別代表男生和女生,當(dāng)播放每一首歌曲時,便可使兩隊各有一元素出隊列,這樣就可以模擬出搭配情況。同時,由于題目要求系統(tǒng)能模擬動態(tài)地顯示出上述過程,所以就考慮調(diào)用一個延遲函數(shù)sleep(),使歌曲之間有一段時間間隔,即模擬了顯示中的那一動態(tài)過程。其次便是在實現(xiàn)過程中遇到的具體細(xì)節(jié)問題,比如一開始設(shè)計了兩個出對函數(shù)dequeue(),讓首元素結(jié)點出隊,然后調(diào)用入隊函數(shù)add(),使其入隊到隊尾,但在測試時發(fā)現(xiàn),如果輸入的人數(shù)為2,那么在到第三首歌曲時程序便會終止;經(jīng)過分析發(fā)現(xiàn)是這兩個函數(shù)的調(diào)用,使數(shù)據(jù)出錯,所以就將這兩個出對函數(shù)用一個函數(shù)change()代替,這個函數(shù)能實現(xiàn)將首元素結(jié)點移到隊尾的功能。這樣不僅沒有了之前的問題,而且使程序更加易懂。在這些細(xì)節(jié)方面的具體設(shè)計,是對個人分析問題、解決問題能力的一個很好的鍛煉。通過這個過程的鍛煉,不僅能對所學(xué)的知識點有很好的掌握,而且還是對個人能力的很好的訓(xùn)練。
其次,以前我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認(rèn)識有所提高。讓自己有一定的能力去改正一些常見的錯誤語法,很高興這兩周的學(xué)習(xí)讓我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)有了新的認(rèn)識,所以后在學(xué)習(xí)過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機。在這次課程設(shè)計的實驗中,我收獲了許多知識,通過查找大量資料,請教老師,以及不懈的努力,也培養(yǎng)了獨立思考、動手操作的能力。我也學(xué)會了許多學(xué)習(xí)和解決實際問題的方法,讓我受益匪淺。課程設(shè)計對我來說,趣味性強,不僅鍛煉能力,而且可以學(xué)到很多東西,在與老師和同學(xué)的交流過程中,互動學(xué)習(xí),將知識融會貫通,也增強了我和同學(xué)之間的團隊合作的能力。讓我們知道只要努力,集中精力解決問題,一定會有收獲的,過程也是很重要的。
在這次課程設(shè)計中我們要學(xué)會利用時間,在規(guī)定的時間內(nèi)完成我們的任務(wù),要逐漸養(yǎng)成用c語言編寫程序的良好習(xí)慣。這些對我來說都是一種鍛煉,一個知識積累的過程,一種能力的提高。要打好基礎(chǔ),才能用更好的辦法,更簡潔明了的程序解決實際問題,只有這樣才能進一步的取得更好的成績。我們會更加努力,努力的去彌補自己的缺點,發(fā)展自己的優(yōu)點,去充實自己,只有在了解了自己的長短之后,我們會更加珍惜擁有的,更加努力的去完善它,增進它。
當(dāng)然我現(xiàn)在的水平還是很有限,但我還會繼續(xù)努力的,在解決實際問題時如果遇到了難題,我們要學(xué)會去查找大量的有關(guān)這方面的資料,還要借助于網(wǎng)絡(luò)不斷擴大自己的知識面和閱讀量。這樣也可以鍛煉我們的自主學(xué)習(xí)能力和解決問題的能力,學(xué)到了許多以前沒學(xué)到的東西。
在課程設(shè)計中的程序都比較復(fù)雜,所以需要我們要更加地細(xì)心,認(rèn)真的完成每一步的操作,修改語法,按照老師的指導(dǎo)思想來完成。還記得一開始拿到題目時我們的一臉茫然,而現(xiàn)在是收獲滿滿的自信,每個人都或多或少有所收獲,也讓我們對程序設(shè)計和算法有了進一步理解、認(rèn)識。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十一
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的.提高。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十二
本次課程設(shè)計所用到的知識完全是上學(xué)期的知識,通過這次課程設(shè)計,我認(rèn)識到了我對數(shù)據(jù)結(jié)構(gòu)這門課的掌握程度。
首先我這個課程設(shè)計是關(guān)于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關(guān)于二叉樹的知識有溫習(xí)了一遍,還好并沒有忘掉。二叉樹這章節(jié)難度中上等,而且內(nèi)容廣泛,所以我只掌握了百分之六七十。
然后,在編程中我認(rèn)識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認(rèn)識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學(xué)之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學(xué)會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關(guān)于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復(fù)雜。以前,沒動手編程的時候覺得這些知識很容易,現(xiàn)在編程了才發(fā)現(xiàn)自己錯了,大錯特錯了,我們這個專業(yè)最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業(yè)了。計算機這個專業(yè)就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業(yè)的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發(fā)現(xiàn)里面的樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”??梢哉f只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當(dāng)作我們不可或缺的好朋友。
最后我要談的是長時間編程的好處,俗話說“熟能生巧”,確實是這樣。如果我們長時間不編程,在一接觸他,我們會感到很陌生。有規(guī)律的編程會提高我們的動手能力,我們的思維,也會讓我們變得很細(xì)心。在一個幾千行的程序中,我們都能找到錯誤,那我們還會怕其他的錯誤嗎?可以說編程是我們在我們這一行業(yè)的一把利劍,如果我們能很好的利用它,我們就會成為這個行業(yè)的真正成功者。也許你會說就算變成好了也不一定成功,是的,但是你不會編程就一定不會成功。如果,我們想成為這個專業(yè)的成功者,我們就得愛上編程,不管他是怎么得乏味,怎么得無聊,我們都不能丟掉他。
總之,動手編程就是鍛煉我們的動手能力,當(dāng)然這個動手能力并不是科研上的動手能力,而是我們的動手編程能力,記住,只要你真正的喜歡上他,你就會發(fā)現(xiàn)其中的樂趣,我相信,只要你堅持下去,你一定會喜歡上他,把編程當(dāng)作自己日常生活中一件必須做的事情。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十三
“數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計”是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的.集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫程序的能力,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
當(dāng)初拿到這次課程設(shè)計題目時,似乎無從下手,但是經(jīng)過分析可知,對于簡單文本編輯器來說功能有限,不外乎創(chuàng)作文本、顯示文本、統(tǒng)計文本中字母—數(shù)字—空格—特殊字符—文本總字?jǐn)?shù)、查找、刪除及插入這幾項功能。于是,我進行分模塊進行編寫程序。雖然每個模塊程序并不大,但是每個模塊都要經(jīng)過一番思考才能搞清其算法思想,只要有了算法思想,再加上c程序語言基礎(chǔ),基本完成功能,但是,每個模塊不可能一次完成而沒有一點錯誤,所以,我給自己定了一個初級目標(biāo):用c語言大體描述每個算法,然后經(jīng)調(diào)試后改掉其中明顯的錯誤,并且根據(jù)調(diào)試結(jié)果改正一些算法錯誤,當(dāng)然,這一目標(biāo)實現(xiàn)較難。最后,經(jīng)過反復(fù)思考,看一下程序是否很完善,如果能夠達到更完善當(dāng)然最好。并非我們最初想到的算法就是最好的算法,所以,有事我們會而不得不在編寫途中終止換用其他算法,但是,我認(rèn)為這不是浪費時間,而是一種認(rèn)識過程,在編寫程序中遇到的問題會為我們以后編寫程序積累經(jīng)驗,避免再犯同樣的錯誤。但是,有的方法不適用于這個程序,或許會適用于另外一個程序。所以,探索的過程是成長的過程,是為成功做的鋪墊。經(jīng)過努力后獲得成功,會更有成就感。
在課程設(shè)計過程中通過獨立解決問題,首先分析設(shè)計題目中涉及到的數(shù)據(jù)類型,在我們學(xué)習(xí)的數(shù)據(jù)存儲結(jié)構(gòu)中不外乎線性存儲結(jié)構(gòu)及非線性存儲結(jié)構(gòu),非線性存儲結(jié)構(gòu)中有樹型,集合型,圖型等存儲結(jié)構(gòu),根據(jù)數(shù)據(jù)類型設(shè)計數(shù)據(jù)結(jié)點類型。然后根據(jù)設(shè)計題目的主要任務(wù),設(shè)計出程序大體輪廓(包括子函數(shù)和主函數(shù)),然后對每個子函數(shù)進行大體設(shè)計,過程中錯誤在所難免,所以要經(jīng)過仔細(xì)探索,對每個函數(shù)進行改進。
程序基本完成后,功能雖然齊全,但是程序是否完善(例如,輸入數(shù)據(jù)時是否在其范圍之內(nèi),所以加入判斷語句是很有必要的)還需運行測試多次,如有發(fā)現(xiàn)應(yīng)該對其進行改善,當(dāng)然要在力所能及的前提下。
課程設(shè)計過程雖然短暫,但是使我深刻理解數(shù)據(jù)結(jié)構(gòu)和算法課程對編程的重要作用,還有“數(shù)據(jù)結(jié)構(gòu)與算法”還提供了一些常用的基本算法思想及算法的編寫程序。通過獨立完成設(shè)計題目,使我系統(tǒng)了解編程的基本步驟,提高分析和解決實際問題的能力。通過實踐積累經(jīng)驗,才能有所創(chuàng)新。正所謂,良好的基礎(chǔ)決定上層建筑。只有基本功做好了,才有可能做出更好的成果。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十四
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
第二篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會
時光荏苒,如白駒過隙般匆匆而去,眼看的一年實習(xí)生活馬上就要成為美好的回憶。在這短短一年的時間里我感覺自己成長了許多,從象牙塔邁出的第一步走的特別的穩(wěn)重,感謝學(xué)校給我提供了一個努力拼搏的舞臺,讓我學(xué)會了如何面對這個真實的社會,實現(xiàn)了從在校學(xué)子向職場人士的轉(zhuǎn)變。
實習(xí)是繼中考后又一個人生的十字路口,它意味著人生一個新時期的到來——告別學(xué)校走入社會。社會是個大的集合,不管是以前的學(xué)校還是現(xiàn)在的實習(xí)單位都同屬這個集合。這幾個月來,給我感覺學(xué)校純一點,單位復(fù)雜一點。不過我知道不論學(xué)校還是單位其實都是社會的縮影。實習(xí)的真正目的就是讓我們這些在校的學(xué)生走入社會。社會是形形色色、方方面面的,你要學(xué)會的是適應(yīng)這個社會而不是讓這個社會適應(yīng)你。
剛剛走進社會不適應(yīng)是正常的。人有的時候很奇怪:心情或者更準(zhǔn)確地說是熱情往往會因時間、環(huán)境、所經(jīng)歷的事而起伏。就像我對境界一詞的理解:人與他所受教育、所處環(huán)境、所經(jīng)歷對事物的理解、判斷、預(yù)知的程度就是這個人的境界。
作為一名中專生,專業(yè)需求的建筑認(rèn)識實訓(xùn)開始了,我們?nèi)珜I(yè)的同學(xué)在xx的各大建筑工地認(rèn)識實習(xí),對于我當(dāng)初選擇土木工程這樣的專業(yè),說真的我并不知道什么是土木工程?,F(xiàn)在我對土木工程有了基本的感性認(rèn)識了,我想任何事的認(rèn)識都是通過感性認(rèn)識上升到理性認(rèn)識的,這次認(rèn)識實習(xí)應(yīng)該是一個鍛煉的好機會!
土木工程是建造各類工程設(shè)施的學(xué)科、技術(shù)和工程的總稱。它既指與與人類生活、生產(chǎn)活動有關(guān)的各類工程設(shè)施,如建筑公程、公路與城市道路工程、鐵路工程、橋梁工程、隧道工程等,也指應(yīng)用材料、設(shè)備在土地上所進行的勘測、設(shè)計、施工等工程技術(shù)活動。
我應(yīng)該知道現(xiàn)在的我還不夠成熟,如果說人生是一片海洋,那么我應(yīng)該在這片海洋里劈波斬浪,揚帆遠航而不是躲在避風(fēng)港里。只要經(jīng)歷多了,我就會成熟;我就會變強。我相信。那時的成功是領(lǐng)導(dǎo)、師傅們給我鼓勵,是實習(xí)的經(jīng)歷給我力量,所以我感謝領(lǐng)導(dǎo)師傅還有我的好朋友們,也感謝學(xué)校給我這次實習(xí)的機會。
一年的實習(xí)生活中,緊張過,努力過,醒悟過,開心過。這些從為有過的經(jīng)歷讓我進步了,成長了。學(xué)會了一些在學(xué)校從未學(xué)過以后也學(xué)不到的東西,也有很多的感悟。
第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門知識,純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。
純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。我選的上機題目是交叉合并兩個鏈表,對這個題目,我選的上機題目是交叉合并兩個鏈表,對這個題目,我覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯調(diào)試代碼的時候誤,導(dǎo)致整個程序不能運行,然而開始的我還沒從暑假的狀導(dǎo)致整個程序不能運行,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,甚至想到了放棄,但我最終找到了狀態(tài),一步一步慢慢來,放棄,但我最終找到了狀態(tài),一步一步慢慢來,經(jīng)過無數(shù)次的檢查程序錯誤的原因后慢慢懂得了耐心是一個人成功的必然具備的條件!
決問題和在老師的幫助下一步一步慢慢的正確運行程序,決問題和在老師的幫助下一步一步慢慢的正確運行程序,終于完成了這次課程設(shè)計,于完成了這次課程設(shè)計,雖然這次課程設(shè)計結(jié)束了但是總覺得自已懂得的知識很是不足,學(xué)無止境,得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努力深入的學(xué)習(xí)。力深入的學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十五
設(shè)計結(jié)束后要寫出課程設(shè)計報告,以作為整個課程設(shè)計評分的書面依據(jù)和存檔材料。設(shè)計報告以規(guī)定格式的電子文檔書寫,打印并裝訂,排版及圖,表要清楚,工整。裝訂順序如下:封面、目錄、正文。正文包括以下7個內(nèi)容:
1、需求分析
陳述說明程序設(shè)計的任務(wù),強調(diào)的是程序要做什么,需要什么結(jié)果、所能達到的功能。
2、概要設(shè)計
實現(xiàn)概要設(shè)計中定義的所有數(shù)據(jù)類型,對每個操作只需要寫出偽碼算法;對主程序和其他模塊也都需要寫出偽碼算法(偽碼算法達到的詳細(xì)程度建議為:按照偽碼算法可以在計算機鍵盤直接輸入高級程序設(shè)計語言程序);可采用流程圖、ns圖進行描述,畫出函數(shù)和過程的調(diào)用關(guān)系圖。
4、調(diào)試分析
內(nèi)容包括:
c.經(jīng)驗和體會等。5.測試結(jié)果
列出你的測試結(jié)果,包括輸入和輸出。這里的測試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于需求分析中所列。
6、參考文獻
列出參考的相關(guān)資料和書籍。
封面格式如下:
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告
班級:________________________
姓名:____________________
指導(dǎo)教師:___________________
成績:__________________________
信息工程學(xué)院
年月日
目錄
1、需求分析………………………………………………
22.概要設(shè)計………………………………………………2
3、詳細(xì)設(shè)計………………………………………………2
4、調(diào)試分析………………………………………………2
附錄……………………………………………………
一、需求分析
二、概要設(shè)計
三、詳細(xì)設(shè)計
四、調(diào)試分析
五、測試結(jié)果
六、參考文獻
七、附錄
附錄為程序代碼!4
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十六
優(yōu)秀作文推薦:課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
在這次課程設(shè)計當(dāng)中,我了解到了我的不足,如算法的不完善、不細(xì)心和耐心不是很好等等。不細(xì)心的我在調(diào)試程序時,老是因為某個書寫錯誤導(dǎo)致錯誤;對這些錯誤,我不得不花大量的時間去更正,并且還要重復(fù)檢查是否出現(xiàn)雷同的錯誤而導(dǎo)致程序不能運行。但是通過這次課程設(shè)計,我的這些缺點有些改善。我在寫新的程序時,首先要考慮的深入一點、仔細(xì)一點,這樣要修改程序的時間就會少很多。并且也不會因為自己不細(xì)心而導(dǎo)致的浪費時間的情況出現(xiàn)。
在進行程序設(shè)計時,要注意想好思路。即要有恰當(dāng)模塊名、變量名、常量名、子程序名等。將每個功能的模塊,即函數(shù)名要清晰的表述出來,使用戶能夠一目了然此程序的功能。當(dāng)然適當(dāng)?shù)?給寫注釋,也是方便用戶的理解。還有在編寫程序時要注意對程序的適當(dāng)分配,便于用戶看懂程序,也便于自己檢查城市。但是完成任何一個較大的程序,都需要掌握一定的編程基礎(chǔ),需要不斷的探索和求知過程,這樣對自己編程能力的提高有較大的幫助。當(dāng)然,任何程序必須經(jīng)過計算機的調(diào)試,看是否調(diào)試成功,發(fā)現(xiàn)錯誤,一個個,一步步去解決,這樣就能從錯誤中進步。
通過課程設(shè)計加強了我的動手能力,以及提升了局部和統(tǒng)一考慮問題的思維方式?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個月的日子里,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。
通過這次的課程設(shè)計,我學(xué)到了怎么樣從一個實際問題出發(fā),建立模型,找到相應(yīng)的存儲結(jié)構(gòu)和實現(xiàn)方法,實際運行,反復(fù)調(diào)試和修改,最終實現(xiàn)功能。在程序設(shè)計方法以及上機操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)了良好的程序設(shè)計技能。
在這次課程設(shè)計中,得到了好多同學(xué)的幫助以及老師的指導(dǎo),在此要表達我真誠的謝意!
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十七
本次課程設(shè)計所用到的知識完全是上學(xué)期的知識,通過這次課程設(shè)計,我認(rèn)識到了我對數(shù)據(jù)結(jié)構(gòu)這門課的掌握程度。
首先我這個課程設(shè)計是關(guān)于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關(guān)于二叉樹的知識有溫習(xí)了一遍,還好并沒有忘掉。二叉樹這章節(jié)難度中上等,而且內(nèi)容廣泛,所以我只掌握了百分之六七十。
然后,在編程中我認(rèn)識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認(rèn)識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學(xué)之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學(xué)會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關(guān)于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復(fù)雜。以前,沒動手編程的時候覺得這些知識很容易,現(xiàn)在編程了才發(fā)現(xiàn)自己錯了,大錯特錯了,我們這個專業(yè)最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業(yè)了。計算機這個專業(yè)就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業(yè)的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發(fā)現(xiàn)里面的樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”??梢哉f只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當(dāng)作我們不可或缺的好朋友。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十八
數(shù)據(jù)結(jié)構(gòu)是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機科學(xué)的核心課程,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課。隨著高級語言的發(fā)展,數(shù)據(jù)結(jié)構(gòu)在計算機的研究和應(yīng)用中已展現(xiàn)出強大的生命力,它兼顧了諸多高級語言的特點,是一種典型的結(jié)構(gòu)化程序設(shè)計語言,它處理能力強,使用靈活方便,應(yīng)用面廣,具有良好的可移植性。
緊張的兩周數(shù)據(jù)結(jié)構(gòu)實訓(xùn)很快就過去了,通過這兩周的實踐學(xué)習(xí),不僅使我們鞏固了以前的知識并在此基礎(chǔ)上還對數(shù)據(jù)結(jié)構(gòu)的特點和算法有了更深的了解,使我們在這門課程的實際應(yīng)用上也有了一個提高。
首先這兩周的學(xué)習(xí),使我們在鞏固了原有的理論知識上,又培養(yǎng)了靈活運用和組成所學(xué)過知識及技能來分析、解決實際問題的能力,使我們體會到自身知識和能力在實際中的應(yīng)用和發(fā)揮。
其次,它激發(fā)了我們創(chuàng)新意識,開發(fā)創(chuàng)造的能力和培養(yǎng)溝通能力。另外,讓我們進一步熟悉了數(shù)據(jù)結(jié)構(gòu)的設(shè)計應(yīng)用。每一處編碼都是在反復(fù)的熟悉數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)特性,及其語法、函數(shù)和程序設(shè)計思想的過程,對我們數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)和提高很有益處,并且使我們明白了程序設(shè)計過程,如解決一些實際問題,從解決實際問題的角度,我們可以這樣來看:
第一要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;
第二,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個過程中,可確定所需的數(shù)據(jù)結(jié)構(gòu)的基本類型——線性表、棧、隊列、串、數(shù)組、廣義表、樹和二叉樹以及圖等,然后確定處理過程——算法,通過在編譯環(huán)境中的編譯與調(diào)試,可到最終的程序。最后,在這次的實訓(xùn)過程中,我們深刻的認(rèn)識到了自己在學(xué)習(xí)方面的不足之處,我知道我還有太多的基本的思想沒有真正的理解,當(dāng)然我們不會灰心,我們會在以后的日子里努力彌補我們的不足。
在兩周的實訓(xùn)中,我們也體會到了團隊合作的重要性,從最初的查閱資料到最后的程序的成功運行,我們組有過山窮水盡的困惑;有過柳暗花明的驚喜;有過唇槍舌劍的辯論;有過相互鼓勵的安慰。兩個禮拜的時間我們經(jīng)歷了很多,也收獲了很多。與其說這次的實訓(xùn)是體力與腦力的作業(yè),不如說它是合作精神和毅力的考驗。經(jīng)過這次課程設(shè)計,我們不僅學(xué)到了很多知識和技能,更重要的是我們學(xué)會了如何運用所學(xué)知識去解決實際問題。
總之,兩個禮拜的課程設(shè)計讓我們受益匪淺。我們深深認(rèn)識到,要學(xué)好一門學(xué)科,沒有刻苦鉆研的精神是不行的,只有在不斷的嘗試中,經(jīng)歷失敗,從失敗中經(jīng)驗,然后再不斷的嘗試,才能獲得成功。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十九
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的'程序。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十一
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。
數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門知識,純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。
純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。來說具有一定的難度。它是其它編程語言的'一門基本學(xué)科。我選的上機題目是交叉合并兩個鏈表,對這個題目,我選的上機題目是交叉合并兩個鏈表,對這個題目,我覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯調(diào)試代碼的時候誤,導(dǎo)致整個程序不能運行,然而開始的我還沒從暑假的狀導(dǎo)致整個程序不能運行,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,甚至想到了放棄,但我最終找到了狀態(tài),一步一步慢慢來,放棄,但我最終找到了狀態(tài),一步一學(xué)無止境,得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努力深入的學(xué)習(xí)。力深入的學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十二
數(shù)據(jù)結(jié)構(gòu)與算法(data structures)
計算機技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標(biāo)志,并逐步滲透到人類生活的各個領(lǐng)域。隨著計算機硬件的發(fā)展,對計算機軟件的發(fā)展也提出了越來越高的要求。由于軟件的核心是算法,而算法實際上是對加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對提高編程能力和設(shè)計高性能的算法是至關(guān)重要的。
非數(shù)值計算問題的數(shù)學(xué)模型不再是傳統(tǒng)的數(shù)學(xué)方程問題,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,簡單地說,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題的學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。
一、教學(xué)目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);
教學(xué)要求在每章教學(xué)內(nèi)容給出,大體上為三個層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學(xué)會所學(xué)知識,熟練掌握就是運用所學(xué)知識解決實際問題。
教學(xué)目的為:了解算法對于程序設(shè)計的重要性 ; 學(xué)習(xí)掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用算法的設(shè)計。了解算法分析方法。
二、教學(xué)重點與難點--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法。
1、鏈表插入、刪除運算的算法。算法時間復(fù)雜度
2、后綴表達式的算法,數(shù)制的換算
利用本章的基本知識設(shè)計相關(guān)的應(yīng)用問題
3、循環(huán)隊列的特點及判斷溢出的條件
利用隊列的特點設(shè)計相關(guān)的應(yīng)用問題
4、串的模式匹配運算算法
5、二叉樹遍歷算法的設(shè)計
利用二叉樹遍歷算法,解決簡單應(yīng)用問題 哈夫曼樹的算法
6、圖的遍歷
最小生成樹
最短路徑
7、二叉排序樹查找
平衡樹二叉樹
8、堆排序
快速排序 歸并排序
四、教學(xué)內(nèi)容、目標(biāo)與學(xué)時分配
教學(xué)內(nèi)容 教學(xué)目標(biāo) 課時分配
1、緒論
數(shù)據(jù)結(jié)構(gòu)的內(nèi)容
邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)
算法和算法分析
2、線性表
線性表的定義與運算
線性表的順序存儲
線性表的鏈?zhǔn)酱鎯?BR> 3、棧
棧的定義與運算
棧存儲和實現(xiàn)
棧的應(yīng)用舉例
4、隊列
隊列的定義與基本運算
隊列的存儲與實現(xiàn)
隊列的應(yīng)用舉例
5、串
串的定義與基本運算
串的表示與實現(xiàn)
串的基本運算
6、樹和二叉樹
樹的定義和術(shù)語
二叉樹樹的基本概念和術(shù)語 遍歷二叉數(shù)和線索二叉樹
二叉樹的轉(zhuǎn)換
二叉樹的應(yīng)用
哈夫曼樹及其應(yīng)用
7、圖
圖的定義和術(shù)語
圖的存儲結(jié)構(gòu)
圖的遍歷算法
圖的連通性
8、查找
查找的基本概念與靜態(tài)查找 動態(tài)查找
哈希表
了解
了解
掌握
熟練掌握順序表存儲地址的計算
掌握單鏈表的結(jié)構(gòu)特點和基本運算
掌握雙鏈表的結(jié)構(gòu)特點和基本運算
掌握棧的定義與運算
掌握棧的存儲與實現(xiàn)
熟練掌握棧的各種實際應(yīng)用
掌握隊列的定義與基本運算
熟練掌握隊列的存儲與實現(xiàn)
掌握循環(huán)隊列的特征和基本運算
了解串的邏輯結(jié)構(gòu)
掌握串的存儲結(jié)構(gòu)
熟練掌握串的基本運算
了解
了解二叉樹
熟練掌握二叉樹定義和存儲結(jié)構(gòu)
了解二叉樹的遍歷算法
掌握
掌握哈夫曼的建立及編碼
了解
了解
熟練掌握
熟練掌握
了解
熟練掌握
了解哈希表與哈希方法
4學(xué)時
1學(xué)時
1學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
12學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
4學(xué)時
2學(xué)時
2學(xué)時
9、排序
12學(xué)時 插入排序
熟練掌握基本思想
3學(xué)時 快速排序
了解各種內(nèi)部排序方法和特點
3學(xué)時 選擇排序
掌握
2學(xué)時 各種排序方法比較
掌握
2學(xué)時
實驗內(nèi)容 實驗?zāi)繕?biāo) 課時分配 算法編程實驗:
1、用指針方式編寫程序 復(fù)習(xí)c(c++)語言指針、結(jié)構(gòu)體等的用法
2、對單鏈表進行遍歷
鏈表的描述與操作實現(xiàn)
3、棧及其操作
描述方法及操作
4、編寫串子系統(tǒng)1 串的特點及順序定長存儲、操作、查找
5、編寫串子系統(tǒng) 2 串的特點及順序定長存儲、操作、查找
6、編寫樹子系統(tǒng)1 二叉樹的特點及存儲方式、創(chuàng)建、顯示、遍歷等
7、編寫樹子系統(tǒng)2 二叉樹的特點及存儲方式、創(chuàng)建、顯示、遍歷等
8、圖子系統(tǒng)
圖的鄰接矩陣的存儲、遍歷、廣度/深度優(yōu)先搜索
9、查找子系統(tǒng)
理解查找基本算法、平均查找長度、靜態(tài)、動態(tài)查找等
五、考試范圍與題型
1、考試范圍與分?jǐn)?shù)比例
1)緒論
12% 2)線性表
17% 3)棧
7% 4)隊列
6% 5)串
4% 6)樹和二叉樹
14% 7)圖
15% 8)查找
4% 9)排序
21%
2、考試題型與分?jǐn)?shù)比例
1)名詞解釋
18% 2)判斷對錯
16% 3)填空
16% 4)單項選擇
18% 5)應(yīng)用
32%
六、教材與參考資料
1、教材: 實用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(譚浩強)中國鐵道出版社
2、參考資料: 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)實用教程(徐孝凱)清華大學(xué)出版社
(撰寫人:
,審核人: 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時)
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十三
談到計算機方面的專業(yè)課程,我覺得數(shù)據(jù)結(jié)構(gòu)算是一門必不可少的課了,它是計算機從業(yè)和研究人員了解、開發(fā)及最大程度的利用計算機硬件的一種工具。數(shù)據(jù)結(jié)構(gòu)與算法分析是兩門緊密聯(lián)系的課程,算法要靠好的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),二者的關(guān)系是密不可分的,談到算法不得不講數(shù)據(jù)結(jié)構(gòu),談數(shù)據(jù)結(jié)構(gòu)也不可避免的要了解算法,好的算法一定有一個好的數(shù)據(jù)結(jié)構(gòu),很多算法實際上是對某種數(shù)據(jù)結(jié)構(gòu)實行的一種變換,研究算法也就是研究在實行變換過程中數(shù)據(jù)的動態(tài)性質(zhì)。這兩門課程分別是我在大二和研一的時候?qū)W的,因為它們密切的聯(lián)系,這里將其放在一起總結(jié)如下。
什么是數(shù)據(jù)結(jié)構(gòu)呢?研究數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)(物理結(jié)構(gòu))以及它們之間的關(guān)系,且為該結(jié)構(gòu)定義相應(yīng)的運算設(shè)計相應(yīng)的算法。這里的數(shù)據(jù)是指可輸入到計算機能被程序處理的符號的集合。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)之間邏輯關(guān)系的描述,邏輯結(jié)構(gòu)的分類有線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)在計算機中存儲結(jié)構(gòu),也稱為物理結(jié)構(gòu),它有4類基本的存儲映射方法:1.順序的方法;2.鏈接的方法;3.索引的方法;4.散列的方法。在程序設(shè)計語言中,數(shù)據(jù)結(jié)構(gòu)直接反映在數(shù)據(jù)類型上,比如一個整型變量就是一個節(jié)點,根據(jù)類型給他分配內(nèi)存單元。抽象數(shù)據(jù)類型:一組值以及在這些值上定義的操作集合,它是描述數(shù)據(jù)結(jié)構(gòu)的一種理論工具,其特點是把數(shù)據(jù)結(jié)構(gòu)作為獨立于應(yīng)用程序的一種抽象代數(shù)結(jié)構(gòu)。
線性表結(jié)構(gòu):由一系列元素組成的有序的序列,除了第一個元素和最后一個元素外,每個元素都只有一個直接前趨和直接后繼,元素的個數(shù)稱為線性表的長度。它的存儲方式有順序存儲和鏈?zhǔn)酱鎯?。順序存儲方式它的?yōu)點是存儲單元是連續(xù)的,適合快速訪問元素內(nèi)容,鏈表的特點是動態(tài)申請內(nèi)存空間,并通過指針來鏈接結(jié)點,按照線性表的前驅(qū)關(guān)系把一個個結(jié)點鏈接起來,這樣可以動態(tài)地根據(jù)需要分配內(nèi)存空間,經(jīng)常用于插入新結(jié)點或刪除節(jié)點的需要,鏈表還可以根據(jù)結(jié)點中指針個數(shù)分為單鏈表、雙鏈表、循環(huán)鏈表等。在線性表結(jié)構(gòu)中有兩類特別的線性表:棧和隊列。棧是一種限制訪問端口的線性表,常稱為后進先出表。正是這種特殊的性質(zhì)使得棧的用途非常廣泛,比如在計算表達式的值時處理運算符的先后次序,另外一個大的用處就是遞歸了,hanoi 塔就是最典型的用了遞歸的思想,在算法中,也有很多運用遞歸思想的例子。隊列也屬于限制訪問點的線性表,它的特點就是加入和刪除元素都只能在隊列的一端進行,即隊列首出,隊列尾進,最大的特點是先來先服務(wù),先進先出。因為這個特點,隊列常被用作消息緩沖器。
在算法設(shè)計中,順序表主要用于檢索,而利用棧中的遞歸思想在算法中則應(yīng)用非常廣泛,如遞歸排序,分治算法等。
樹結(jié)構(gòu):是一種非常重要的非線性數(shù)據(jù)結(jié)構(gòu),它是由一個根結(jié)點和若干葉結(jié)點組成的樹狀結(jié)構(gòu),除了根結(jié)點每個結(jié)點只能有一個父節(jié)點,可以有若干子結(jié)點,若干個樹結(jié)構(gòu)還可以構(gòu)成森林,樹的存儲結(jié)構(gòu)也分為順序存儲和鏈?zhǔn)酱鎯?,最典型的是左孩子右兄弟法。在樹結(jié)構(gòu)中比較重要的算法就是周游(遍歷)樹,有先根次序、后根次序以及中根次序。樹結(jié)構(gòu)中有幾類非常重要的特殊樹結(jié)構(gòu),如二叉樹,b樹,b+樹等,其中,二叉樹應(yīng)用最為廣泛。
二叉樹:是指每個結(jié)點最多有兩個子結(jié)點的樹結(jié)構(gòu),具體細(xì)分,根據(jù)葉子結(jié)點的特性可分為滿二叉樹、完全二叉樹等。二叉樹的遍歷也分為深度優(yōu)先和廣度優(yōu)先。另外,二叉樹有幾條非常重要的性質(zhì),這也使得它的應(yīng)用非常廣泛。
在算法設(shè)計中,典型的利用樹的深度優(yōu)先遍歷的算法是回溯法,而典型的廣度優(yōu)先搜索算法是分枝定界法。
圖:是一種較線性表和樹更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。一般來講,數(shù)據(jù)的邏輯結(jié)構(gòu)可表示為結(jié)點的有窮集合k和k上的一個關(guān)系r,如果對k中結(jié)點相對于r的前驅(qū)、后繼個數(shù)加以限制,則可以分別定義線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu),即:
圖結(jié)構(gòu):不限制前驅(qū)的個數(shù),亦不限制后繼的個數(shù),反映一種網(wǎng)狀關(guān)系。
通常用g=(v,e)代表一個圖,其中v是頂點集,e是邊集。圖分為有向圖和無向圖,圖的存儲方式有鄰接表和鄰接矩陣法。和樹類似的,圖中也需要周游,同樣有深度優(yōu)先搜索和廣度優(yōu)先搜索,而比樹的周游要更復(fù)雜,也更重要。在這一塊中,有兩種比較典型的求最短路徑和最小支撐樹的算法需要注意,它們分別是dijkstra算法和prim算法。另外需要注意的是圖的連通性。
在算法設(shè)計中,典型的用到圖論的算法有貪心算法和動態(tài)規(guī)劃算法。
(1)輸入:有零個或多個由外部提供的量作為算法的輸入。(2)輸出:算法產(chǎn)生至少一個量作為輸出。
(3)確定性:組成算法的每條指令是清晰的,無歧義的。(4)有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時間也是有限的。
我們研究一個算法或者評價一個算法主要是通過估計該算法的復(fù)雜性,包括時間復(fù)雜性和空間復(fù)雜性??臻g復(fù)雜性是指使用該算法的程序在運行時需要占用多少內(nèi)存空間,具體包括指令空間、數(shù)據(jù)空間和環(huán)境棧空間。時間復(fù)雜性是指執(zhí)行該程序所需要的時間量級,通常是估算的時間,包括編譯時間和運行時間。同時評價一個算法的好壞還要看其時間復(fù)雜性和空間復(fù)雜性隨著輸入規(guī)模的增長趨勢,一般能接受的最好是線性增長。在算法設(shè)計這本書中,每介紹一個算法都會分析其算法復(fù)雜度,由此可看出它的重要性。
首先,從遞歸的分治算法開始。分治算法的基本思想是將一個規(guī)模為n的問題分解為k個規(guī)模較小的子問題,這些子問題互相獨立且與原問題相同。遞歸的解這些子問題,然后將各個子問題的解合并得到原問題的解。該算法的主要應(yīng)用有大整數(shù)乘法,矩陣乘法、合并排序等??梢源蟠蠼档退惴ǖ臅r間復(fù)雜度,但使用遞歸??赡茉黾映绦虻目臻g規(guī)模。
動態(tài)規(guī)劃算法和貪心算法:與分治算法類似,動態(tài)規(guī)劃的基本思想也是將待求解問題分解成若干子問題,先求解子問題,然后從這些子問題的解得到原問題的解。與分治算法不同的是,適合于用動態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是相互獨立的。動態(tài)規(guī)劃算法適用于解最優(yōu)化問題。通??砂匆韵?個步驟:
(1)找出最優(yōu)解的性質(zhì),并刻畫其結(jié)構(gòu)特征。(2)遞歸的定義最優(yōu)值。
(3)以自底向上的方式計算出最優(yōu)值。
(4)根據(jù)計算最優(yōu)值時得到的信息,構(gòu)造最優(yōu)解。
動態(tài)規(guī)劃算法的基本要素是最優(yōu)子結(jié)構(gòu)性質(zhì)和子問題重疊性質(zhì)。
最優(yōu)子結(jié)構(gòu)性質(zhì)。如果問題的最優(yōu)解所包含的子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)(即滿足最優(yōu)化原理)。最優(yōu)子結(jié)構(gòu)性質(zhì)為動態(tài)規(guī)劃算法解決問題提供了重要線索。
子問題重疊性質(zhì)。子問題重疊性質(zhì)是指在用遞歸演算法自頂向下對問題進行求解時,每次產(chǎn)生的子問題并不總是新問題,有些子問題會被重復(fù)計算多次。動態(tài)規(guī)劃算法正是利用了這種子問題的重疊性質(zhì),對每一個子問題只計算一次,然后將其計算結(jié)果保存在一個表格中,當(dāng)再次需要計算已經(jīng)計算過的子問題時,只是在表格中簡單地查看一下結(jié)果,從而獲得較高的效率。
另外一點要素是備忘錄方法,它作為動態(tài)規(guī)劃算法的變形,用表格保存已解決問題的答案,在下次需要解此子問題時,只要簡單查看子問題的解答,而不必重新計算。與動態(tài)規(guī)劃不同的是備忘錄方法的遞歸是自頂向下的,而動態(tài)規(guī)劃則是自底向上的。
動態(tài)規(guī)劃算法設(shè)計策略典型的應(yīng)用案例有:矩陣連乘、最大字段和、流水作業(yè)調(diào)度等。有時滿足動態(tài)規(guī)劃條件的問題可以有更好的算法,比如貪心算法。貪心算法即總是做出在當(dāng)前看來是最好的選擇。也就是說貪心算法并不從整體最優(yōu)上加以考慮,它所做的總是做出的選擇只是在某種意義上的局部最優(yōu)。這種啟發(fā)式的策略并不能總是奏效,然而對某些特定的問題確能達到預(yù)期目的。比如活動安排的例子。
貪心算法的基本要素主要有貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì)。所謂貪心選擇性質(zhì)是指所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心選擇來達到。這是貪心算法與動態(tài)規(guī)劃的主要區(qū)別,它們的共同點是都要求問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。
貪心算法的典型案列是:活動安排、最優(yōu)裝載問題、最短路徑和最優(yōu)生成樹問題。回溯法和分枝定界法:回溯法有“通用的解題法”之稱。用它可以系統(tǒng)的搜索一個問題的所有解或任一解。它在問題的解空間樹中,按深度優(yōu)先策略,從根節(jié)點出發(fā)搜索解空間樹。其算法框架包含遞歸回溯和迭代回溯,兩個特別的解空間樹為子集樹和排列樹。典型的回溯法的案例有:批處理作業(yè)調(diào)度、圖的m著色、旅行售貨員問題、0-1背包問題等。
分枝定界法類似于回溯法,也是在問題的解空間上搜索問題解的算法。一般情況下,分治定界法與回溯法的求解目標(biāo)不同。回溯法的求解目標(biāo)是找出解空間中滿足約束條件的所有 的解,而分枝定界法的求解目標(biāo)則是找出滿足約束條件的一個解,或是滿足約束條件的解中找出使某一目標(biāo)函數(shù)值達到極大或極小的解,即在某種意義下的最優(yōu)解。由于求解目標(biāo)不同,導(dǎo)致分支定界法與回溯法對解空間的搜索方式也不相同?;厮莘ㄒ陨疃葍?yōu)先的方式搜索解空間,而分枝定界法則以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間。
另外,在算法分析中一定要提的是np問題。首先需要介紹p(polynomial,多項式)問題.p問題是可以在多項式時間內(nèi)被確定機(通常意義的計算機)解決的問題。np(non-deterministic polynomial, 非確定多項式)問題,是指可以在多項式時間內(nèi)被非確定機(他可以猜,他總是能猜到最能滿足你需要的那種選擇,如果你讓他解決n皇后問題,他只要猜n次就能完成----每次都是那么幸運)解決的問題.這里有一個著名的問題----千禧難題之首,是說p問題是否等于np問題,也即是否所有在非確定機上多項式可解的問題都能在確定機上用多項式時間求解。
np完全(np complete,npc)問題是指這樣一類np問題,所有的np問題都可以用多項式時間劃歸到他們中的一個。所以顯然np完全的問題具有如下性質(zhì):它可以在多項式時間內(nèi)求解,當(dāng)且僅當(dāng)所有的其他的np-完全問題也可以在多項式時間內(nèi)求解。這樣一來,只要我們找到一個npc問題的多項式解,所有的np問題都可以多項式時間內(nèi)劃歸成這個npc問題,再用多項式時間解決,這樣np就等于p了。
小結(jié)一下,在算法設(shè)計這么課中學(xué)了這么幾大類典型的算法,里面也涉及到具體的應(yīng)用案例,但我覺得學(xué)算法的目的遠不是學(xué)會這幾種固定的特殊問題的解法而已,事實上領(lǐng)會這些巧妙算法背后的思想然后學(xué)會遷移到其他新的問題中去才是領(lǐng)會了算法設(shè)計的精髓。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十四
一、《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》的目標(biāo)
課程設(shè)計是《數(shù)據(jù)結(jié)構(gòu)》課程的一個重要的實踐環(huán)節(jié),它可加深學(xué)生對該課程所學(xué)內(nèi)容的進一步的理解與鞏固,達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力,培養(yǎng)基本的對基本數(shù)據(jù)結(jié)構(gòu)的理解和運用,良好的程序設(shè)計方法、提高編碼及調(diào)試程序技能的能力,為整個專業(yè)的學(xué)習(xí)以及軟件設(shè)計水平的提高打下良好的基礎(chǔ)。
二、設(shè)計內(nèi)容
每位學(xué)生可以從《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計備選題目》中選擇一個題目自行完成。要求每班中題目不能重復(fù)。
三、設(shè)計要求
1.學(xué)生必須仔細(xì)閱讀《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計任務(wù)書》,認(rèn)真主動完成課設(shè)的要求。有問題及時主動通過各種方式與指導(dǎo)教師聯(lián)系溝通。
2.學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時間,安排好課設(shè)的時間計劃,并在課設(shè)過程中不斷檢測自己的計劃完成情況,及時向教師匯報。
3.課程設(shè)計按照教學(xué)要求需要兩周時間完成,學(xué)院安排設(shè)計時
間學(xué)生不得缺席。
4、每位學(xué)生必須認(rèn)真、獨立完成設(shè)計任務(wù),發(fā)現(xiàn)抄襲者或雷同者,一律按零分處理。
5、程序設(shè)計語言可選擇c或c++。
6、程序要正確且具有一定的健壯性,不會因為用戶的輸入錯誤引起程序運行錯誤而中斷執(zhí)行,對輸入值的類型、大小范圍、字符串的長度等,進行正確性檢查,對不合法的輸入值給出出錯信息,指出錯誤類型,等待重新輸入。
四、上交相關(guān)內(nèi)容要求
上交的成果的內(nèi)容必須由以下三個部分組成,缺一不可。
3. 課程設(shè)計報告:(保存在word 文檔中,文件名要求按照“學(xué)號_姓名_課程設(shè)計報告題目”起名,如文件名為“001_張三_二叉樹動態(tài)演示”.doc)。報告要求文字工整通順、圖表規(guī)范、思路清楚、內(nèi)容正確。設(shè)計報告必須按照規(guī)定格式規(guī)范,a4紙雙面打印、裝訂。
將以上三個部分放在一個文件夾里,文件夾名要求按照"學(xué)號_姓名_課程設(shè)計報告題目”.zip命名。每個班將所有學(xué)生的文件夾收集起來刻成光盤上交。
五、時間安排
設(shè)計時間為兩周(7.07—7.18),7月16日—7月18日答辯??己朔绞?BR> 成績按五分制,包括課程設(shè)計過程、課程設(shè)計結(jié)果、課程設(shè)計報告三部分。其中:
課程設(shè)計過程:20%
包括設(shè)計態(tài)度(10分)、出勤(10分)
課程設(shè)計結(jié)果:40%
其中:程序正確性:30分,運行效果:10分,答辯:10分。課程設(shè)計報告:40%
其中:正確性:20分,完整性:10分,規(guī)范性:10分。
六、設(shè)計報告格式
見《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告模板》。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇一
課程設(shè)計的實質(zhì)是對人類已有知識經(jīng)驗進行有效選擇和重組,其面向未來社會成員的生存和發(fā)展,并由此展現(xiàn)價值和地位。下面是本站為大家?guī)淼臄?shù)據(jù)結(jié)構(gòu)課程設(shè)計
心得體會
,希望可以幫助大家。
這次數(shù)據(jù)庫課程設(shè)計用的是microsoft visual foxpro 6.0 ,而我們平時用的microsoft sql server 20xx,雖然對vfp完全陌生,但在老師的指引下,我們近乎完美的完成了課程設(shè)計。當(dāng)然過程是艱辛的。
面對著完全陌生的操作環(huán)境vfp,許多同學(xué)開始埋怨,要求用sql,用我們學(xué)過的asp等來完成設(shè)計。但我們慢慢發(fā)現(xiàn)用vfp做課程設(shè)計其實很有優(yōu)勢,于是它的這個優(yōu)勢激發(fā)了我們?nèi)チ私馑挠?。老師先將vfp中基本的建數(shù)據(jù)庫,建表以及建表單等向我們演示了一遍,我們也仿照著做了,發(fā)覺并不是很難。但想到這次課程設(shè)計做的是一套學(xué)生學(xué)籍和成績管理系統(tǒng),我們又開始茫然了。那天,老師給我們看了一段可以讓文字循環(huán)移動的代碼,這使我們產(chǎn)生了好奇心理,有了快速了解它的沖動。因為用面向?qū)ο蟮恼Z言做特效,這還是第一次。下課之后我把那段我們不了解的語言寫的特效代碼發(fā)到了vfp論壇上請人幫忙解釋,最后我們完全理解了那段代碼的意思。
這次課程設(shè)計我們克服了炎熱的天氣(學(xué)校機房之前沒裝空調(diào)……后來設(shè)計完才裝……),也克服對新知識的恐懼感以及畏難情緒。我們懂得了團隊合作的重要性,也懂得了團隊中如何交流、如何分工,如何集體討論難點。我們充分利用了網(wǎng)絡(luò)資源(技術(shù)論壇,共享的實例等)。
我們喜歡這次課程設(shè)計的感覺,喜歡編程,喜歡團隊交流。
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現(xiàn)了一個雙向圖信息的存儲。
對整個程序而言,dijkstra算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。
4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的程序,可是好多處的錯誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯誤,但是程序還是得繼續(xù)下去,我多次請教了老師和同學(xué),逐漸能自己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的。現(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二
“數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計”是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫程序的能力,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
當(dāng)初拿到這次課程設(shè)計題目時,似乎無從下手,但是經(jīng)過分析可知,對于簡單文本編輯器來說功能有限,不外乎創(chuàng)作文本、顯示文本、統(tǒng)計文本中字母—數(shù)字—空格—特殊字符—文本總字?jǐn)?shù)、查找、刪除及插入這幾項功能。于是,我進行分模塊進行編寫程序。雖然每個模塊程序并不大,但是每個模塊都要經(jīng)過一番思考才能搞清其算法思想,只要有了算法思想,再加上c程序語言基礎(chǔ),基本完成功能,但是,每個模塊不可能一次完成而沒有一點錯誤,所以,我給自己定了一個初級目標(biāo):用c語言大體描述每個算法,然后經(jīng)調(diào)試后改掉其中明顯的錯誤,并且根據(jù)調(diào)試結(jié)果改正一些算法錯誤,當(dāng)然,這一目標(biāo)實現(xiàn)較難。最后,經(jīng)過反復(fù)思考,看一下程序是否很完善,如果能夠達到更完善當(dāng)然最好。并非我們最初想到的算法就是最好的算法,所以,有事我們會而不得不在編寫途中終止換用其他算法,但是,我認(rèn)為這不是浪費時間,而是一種認(rèn)識過程,在編寫程序中遇到的問題會為我們以后編寫程序積累經(jīng)驗,避免再犯同樣的錯誤。但是,有的方法不適用于這個程序,或許會適用于另外一個程序。所以,探索的過程是成長的過程,是為成功做的鋪墊。經(jīng)過努力后獲得成功,會更有成就感。
在課程設(shè)計過程中通過獨立解決問題,首先分析設(shè)計題目中涉及到的數(shù)據(jù)類型,在我們學(xué)習(xí)的數(shù)據(jù)存儲結(jié)構(gòu)中不外乎線性存儲結(jié)構(gòu)及非線性存儲結(jié)構(gòu),非線性存儲結(jié)構(gòu)中有樹型,集合型,圖型等存儲結(jié)構(gòu),根據(jù)數(shù)據(jù)類型設(shè)計數(shù)據(jù)結(jié)點類型。然后根據(jù)設(shè)計題目的主要任務(wù),設(shè)計出程序大體輪廓(包括子函數(shù)和主函數(shù)),然后對每個子函數(shù)進行大體設(shè)計,過程中錯誤在所難免,所以要經(jīng)過仔細(xì)探索,對每個函數(shù)進行改進。
程序基本完成后,功能雖然齊全,但是程序是否完善(例如,輸入數(shù)據(jù)時是否在其范圍之內(nèi),所以加入判斷語句是很有必要的)還需運行測試多次,如有發(fā)現(xiàn)應(yīng)該對其進行改善,當(dāng)然要在力所能及的前提下。
課程設(shè)計過程雖然短暫,但是使我深刻理解數(shù)據(jù)結(jié)構(gòu)和算法課程對編程的重要作用,還有“數(shù)據(jù)結(jié)構(gòu)與算法”還提供了一些常用的基本算法思想及算法的編寫程序。通過獨立完成設(shè)計題目,使我系統(tǒng)了解編程的基本步驟,提高分析和解決實際問題的能力。通過實踐積累經(jīng)驗,才能有所創(chuàng)新。正所謂,良好的基礎(chǔ)決定上層建筑。只有基本功做好了,才有可能做出更好的成果。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇三
做了一個星期的程序設(shè)計終于做完了,在這次程序設(shè)計課中,真是讓我獲益匪淺,我突然發(fā)現(xiàn)寫程序還挺有意思的。由于上學(xué)期的c語言跟這學(xué)期的數(shù)據(jù)結(jié)構(gòu)都算不上真正的懂,對于書上的稍微難點的知識就是是而非的,所以我只是對老師的程序理解,我也試著去改變了一些變量,自己也盡量多的去理解老師做程序的思路。當(dāng)我第一天坐在那里的時候,我就不知道該做些什么,后來我只有下來自己看了一遍書來熟悉下以前學(xué)過的知識。
通過這次的程序設(shè)計,發(fā)現(xiàn)一個程序設(shè)計就是算法與數(shù)據(jù)結(jié)構(gòu)的結(jié)合體,自己也開始對程序產(chǎn)生了前所未有的興趣,以前偷工減料的學(xué)習(xí)也不可能一下子寫出一個程序出來,于是我就認(rèn)真看老師寫的程序,發(fā)現(xiàn)我們看懂了一個程序其實不難,難的是對于一個程序的思想的理解,我們要掌握一個算法,不僅僅限于讀懂,主要的是要理解老師的思路,學(xué)習(xí)老師的解決問題的'方法。這次試驗中,我發(fā)現(xiàn)書本上的知識是一個基礎(chǔ),但是我基礎(chǔ)都沒掌握,更別說寫出一個整整的程序了。自己在寫程序的時候,也發(fā)現(xiàn)自己的知識太少了,特別是基礎(chǔ)知識很多都是模模糊糊的一個概念,沒有落實到真正的程序,所以自己寫的時候也感到萬分痛苦,基本上涉及一個知識我就會去看看書,對于書本上的知識沒掌握好。在飯后閑暇時間我也總結(jié)了一下,自己以前上課也認(rèn)真的聽了,但是還是寫不出來,這主要歸結(jié)于自己的練習(xí)太少了,而且也總是半懂就不管了。在改寫老師的程序中也出現(xiàn)了很多的問題,不斷的修改就是不斷的學(xué)習(xí)過程,當(dāng)我們?nèi)硇牡耐度肫渲袝r,實際上是一件很有樂趣的事情。對于以后的學(xué)習(xí)有了幾點總結(jié):
第二、各種常用的排序算法,如冒泡排序、堆排序……,這些
是必考的內(nèi)容,分?jǐn)?shù)不會少于20%;
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇四
《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
接下來就跟本站小編一起去了解一下關(guān)于數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
心得體會
吧!
決問題和在老師的幫助下一步一步慢慢的正確運行程序, 決問題和在老師的幫助下一步一步慢慢的正確運行程序,終 于完成了這次課程設(shè)計, 于完成了這次課程設(shè)計,雖然這次課程設(shè)計結(jié)束了但是總覺 得自已懂得的知識很是不足,學(xué)無止境, 得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努 力深入的學(xué)習(xí)。 力深入的學(xué)習(xí)。
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用 edges[i][j]=up 和 edges[j][i]=up 就能實現(xiàn)了一個雙向圖信息的存儲。對整個程序而言,dijkstra 算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c 語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include 頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇五
陳康蔭080401200708級計科系計本(2)班
完成了這次的二元多項式加減運算問題的課程設(shè)計后,我的心得體會很多,細(xì)細(xì)梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當(dāng)其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式b的所有項取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗及體會
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細(xì)節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇六
專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇七
完成了這次的二元多項式加減運算問題的課程設(shè)計后,我的心得體會很多,細(xì)細(xì)梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點,所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對應(yīng)的將其解決。
2、程序的設(shè)計中的邏輯問題及其調(diào)整
我在設(shè)計程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時候,按某種順序?qū)Φ诙P(guān)鍵字進行排序。在此程序中共涉及到3個量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時,再以y為關(guān)鍵字,按照y的指數(shù)大小來進行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時比較多個關(guān)鍵字,而且設(shè)計中涉及了數(shù)組和鏈表的綜合運用,導(dǎo)致反復(fù)修改了很長的時間才完成了一個加法的設(shè)計。但是,現(xiàn)在仍然有一個問題存在:若以0為系數(shù)的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當(dāng)其不是首項的時候,加法函數(shù)在顯示的時候有0為系數(shù)的項時,0前邊不顯示符號,當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設(shè)計減法函數(shù)的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項式b的所有項取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗及體會
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時候要注意細(xì)節(jié),即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導(dǎo)致有的時候在檢查和調(diào)試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇八
通過本次課程設(shè)計,對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的`奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現(xiàn)了一個雙向圖信息的存儲。
對整個程序而言,dijkstra算法始終都是核心內(nèi)容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現(xiàn)這么一個很簡單的想法就需要涉及到很多專業(yè)知識,為了完成設(shè)計,在前期工作中,基本都是以學(xué)習(xí)c語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(diào)用知識點,我沒有掌握好。
不過,有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平,而且在這次課程設(shè)計中我學(xué)會了運用兩個新的函數(shù)sprintf和包涵在#include頭文件中的輸入函數(shù)。因為課程設(shè)計的題目是求最短路徑,本來是想通過算法的實現(xiàn)把這個程序與交通情況相連,但是因為來不及查找各地的信息,所以,這個計劃就沒有實現(xiàn),我相信在以后有更長時間的情況下,我會做出來的。
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。
根據(jù)我在實習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點:
1、認(rèn)真上好專業(yè)實驗課,多在實踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計的時候要有信心,有耐心,切勿浮躁。
4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點,并在此基礎(chǔ)上學(xué)會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。在學(xué)習(xí)科目的第一節(jié)課起,李老師就為我們闡述了它的重要性。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。
剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的程序,可是好多處的錯誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯誤,但是程序還是得繼續(xù)下去,我多次請教了老師和同學(xué),逐漸能自己找出錯誤,并加以改正。
tc里檢查錯誤都是用英文來顯示出來的,經(jīng)過了這次課程設(shè)計,現(xiàn)在已經(jīng)可以了解很多錯誤在英文里的提示,這對我來說是一個突破性的進步,眼看著一個個錯誤通過自己的努力在我眼前消失,覺得很是開心。此次的程序設(shè)計能夠成功,是我和我的同學(xué)三個人共同努力作用的結(jié)果。在這一段努力學(xué)習(xí)的過程中,我們的編程設(shè)計有了明顯的提高。
其實現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費了好多心血,覺得它很難,是需用花費了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有一些共同點,通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇九
這次課程設(shè)計的心得體會通過實習(xí)我的收獲如下:
1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。
3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。
4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟觀念和全局觀念。從剛開始得覺得很難,到最后把這個做出來,付出了很多,也得到了很多,以前總以為自己對編程的地方還不行,現(xiàn)在,才發(fā)現(xiàn)只要認(rèn)真做,沒有什么不可能。
編程時要認(rèn)真仔細(xì),出現(xiàn)錯誤要及時找出并改正,(其中對英語的要求也體現(xiàn)出來了,因為它說明錯誤的時候都是英語)遇到問題要去查相關(guān)的資料。反復(fù)的調(diào)試程序,最好是多找?guī)讉€同學(xué)來對你的程序進行調(diào)試并聽其對你的程序的建議,在他們不知道程序怎么寫的時候完全以一個用戶的身份來用對你的用戶界面做一些建議,正所謂當(dāng)局者迷旁觀者清,把各個注意的問題要想到;同時要形成自己的編寫程序與調(diào)試程序的風(fēng)格,從每個細(xì)節(jié)出發(fā),不放過每個知識點,注意與理論的聯(lián)系和理論與實踐的差別。另外,要注意符號的使用,注意對字符處理,特別是對指針的使用很容易出錯且調(diào)試過程是不會報錯的,那么我們要始終注意指針的初始化不管它怎么用以免不必要麻煩。
通過近兩周的學(xué)習(xí)與實踐,體驗了一下離開課堂的學(xué)習(xí),也可以理解為一次實踐與理論的很好的連接。特別是本組所做的題目都是課堂上所講的例子,在實行之的過程中并不是那么容易事讓人有一種紙上談兵的體會,正所謂紙上得來終覺淺絕知此事要躬行。實訓(xùn)過程中讓我們對懂得的知識做了進一步深入了解,讓我們的理解與記憶更深刻,對不懂的知識與不清楚的東西也做了一定的了解,也形成了一定的個人做事風(fēng)格。
通過這次課程設(shè)計,讓我對一個程序的數(shù)據(jù)結(jié)構(gòu)有更全面更進一步的認(rèn)識,根據(jù)不同的需求,采用不同的數(shù)據(jù)存儲方式,不一定要用棧,二叉樹等高級類型,有時用基本的一維數(shù)組,只要運用得當(dāng),也能達到相同的效果,甚至更佳,就如這次的課程設(shè)計,通過用for的多重循環(huán),舍棄多余的循環(huán),提高了程序的運行效率。在編寫這個程序的過程中,我復(fù)習(xí)了之前學(xué)的基本語法,哈弗曼樹最小路徑的求取,哈弗曼編碼及譯碼的應(yīng)用范圍,程序結(jié)構(gòu)算法等一系列的問題它使我對數(shù)據(jù)結(jié)構(gòu)改變了看法。在這次設(shè)計過程中,體現(xiàn)出自己單獨設(shè)計模具的能力以及綜合運用知識的能力,體會了學(xué)以致用、突出自己勞動成果的喜悅心情,也從中發(fā)現(xiàn)自己平時學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十
在兩周的學(xué)習(xí)和實踐過程中,通過解決學(xué)生搭配問題這一實際問題,讓我對循環(huán)隊列有了更深的了解,對數(shù)據(jù)結(jié)構(gòu)也產(chǎn)生了更加濃厚的興趣,同時也是對我解決實際問題能力的一次提升。
記得王教授給我們上課時就要不斷的通過走算法的方式,掌握所學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)、算法等,而上機則能進一步鞏固自己所學(xué)的知識、提高自己的學(xué)習(xí)能力。在上機的同時也改正了自己對某些算法的錯誤使用,使自己能在通過程序解決問題時抓住關(guān)鍵算法,能夠很好的夠造出解決問題的數(shù)據(jù)結(jié)構(gòu)、算法的設(shè)計思想和流程圖,并用c語言描繪出關(guān)鍵算法。
首先對于這次的課程設(shè)計題目而言,主要是對隊列這一知識點的運用。首先是對問題的分析,明白題目的具體要求,即將現(xiàn)實生活中的舞會搭配問題,用鏈隊列這一數(shù)據(jù)結(jié)構(gòu)描繪出來。用兩個鏈隊列boy和girl分別代表男生和女生,當(dāng)播放每一首歌曲時,便可使兩隊各有一元素出隊列,這樣就可以模擬出搭配情況。同時,由于題目要求系統(tǒng)能模擬動態(tài)地顯示出上述過程,所以就考慮調(diào)用一個延遲函數(shù)sleep(),使歌曲之間有一段時間間隔,即模擬了顯示中的那一動態(tài)過程。其次便是在實現(xiàn)過程中遇到的具體細(xì)節(jié)問題,比如一開始設(shè)計了兩個出對函數(shù)dequeue(),讓首元素結(jié)點出隊,然后調(diào)用入隊函數(shù)add(),使其入隊到隊尾,但在測試時發(fā)現(xiàn),如果輸入的人數(shù)為2,那么在到第三首歌曲時程序便會終止;經(jīng)過分析發(fā)現(xiàn)是這兩個函數(shù)的調(diào)用,使數(shù)據(jù)出錯,所以就將這兩個出對函數(shù)用一個函數(shù)change()代替,這個函數(shù)能實現(xiàn)將首元素結(jié)點移到隊尾的功能。這樣不僅沒有了之前的問題,而且使程序更加易懂。在這些細(xì)節(jié)方面的具體設(shè)計,是對個人分析問題、解決問題能力的一個很好的鍛煉。通過這個過程的鍛煉,不僅能對所學(xué)的知識點有很好的掌握,而且還是對個人能力的很好的訓(xùn)練。
其次,以前我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認(rèn)識有所提高。讓自己有一定的能力去改正一些常見的錯誤語法,很高興這兩周的學(xué)習(xí)讓我對數(shù)據(jù)結(jié)構(gòu)(c語言描述)有了新的認(rèn)識,所以后在學(xué)習(xí)過程中,我會更加注視實踐操作,使自己便好地學(xué)好計算機。在這次課程設(shè)計的實驗中,我收獲了許多知識,通過查找大量資料,請教老師,以及不懈的努力,也培養(yǎng)了獨立思考、動手操作的能力。我也學(xué)會了許多學(xué)習(xí)和解決實際問題的方法,讓我受益匪淺。課程設(shè)計對我來說,趣味性強,不僅鍛煉能力,而且可以學(xué)到很多東西,在與老師和同學(xué)的交流過程中,互動學(xué)習(xí),將知識融會貫通,也增強了我和同學(xué)之間的團隊合作的能力。讓我們知道只要努力,集中精力解決問題,一定會有收獲的,過程也是很重要的。
在這次課程設(shè)計中我們要學(xué)會利用時間,在規(guī)定的時間內(nèi)完成我們的任務(wù),要逐漸養(yǎng)成用c語言編寫程序的良好習(xí)慣。這些對我來說都是一種鍛煉,一個知識積累的過程,一種能力的提高。要打好基礎(chǔ),才能用更好的辦法,更簡潔明了的程序解決實際問題,只有這樣才能進一步的取得更好的成績。我們會更加努力,努力的去彌補自己的缺點,發(fā)展自己的優(yōu)點,去充實自己,只有在了解了自己的長短之后,我們會更加珍惜擁有的,更加努力的去完善它,增進它。
當(dāng)然我現(xiàn)在的水平還是很有限,但我還會繼續(xù)努力的,在解決實際問題時如果遇到了難題,我們要學(xué)會去查找大量的有關(guān)這方面的資料,還要借助于網(wǎng)絡(luò)不斷擴大自己的知識面和閱讀量。這樣也可以鍛煉我們的自主學(xué)習(xí)能力和解決問題的能力,學(xué)到了許多以前沒學(xué)到的東西。
在課程設(shè)計中的程序都比較復(fù)雜,所以需要我們要更加地細(xì)心,認(rèn)真的完成每一步的操作,修改語法,按照老師的指導(dǎo)思想來完成。還記得一開始拿到題目時我們的一臉茫然,而現(xiàn)在是收獲滿滿的自信,每個人都或多或少有所收獲,也讓我們對程序設(shè)計和算法有了進一步理解、認(rèn)識。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十一
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的.提高。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十二
本次課程設(shè)計所用到的知識完全是上學(xué)期的知識,通過這次課程設(shè)計,我認(rèn)識到了我對數(shù)據(jù)結(jié)構(gòu)這門課的掌握程度。
首先我這個課程設(shè)計是關(guān)于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關(guān)于二叉樹的知識有溫習(xí)了一遍,還好并沒有忘掉。二叉樹這章節(jié)難度中上等,而且內(nèi)容廣泛,所以我只掌握了百分之六七十。
然后,在編程中我認(rèn)識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認(rèn)識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學(xué)之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學(xué)會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關(guān)于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復(fù)雜。以前,沒動手編程的時候覺得這些知識很容易,現(xiàn)在編程了才發(fā)現(xiàn)自己錯了,大錯特錯了,我們這個專業(yè)最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業(yè)了。計算機這個專業(yè)就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業(yè)的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發(fā)現(xiàn)里面的樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”??梢哉f只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當(dāng)作我們不可或缺的好朋友。
最后我要談的是長時間編程的好處,俗話說“熟能生巧”,確實是這樣。如果我們長時間不編程,在一接觸他,我們會感到很陌生。有規(guī)律的編程會提高我們的動手能力,我們的思維,也會讓我們變得很細(xì)心。在一個幾千行的程序中,我們都能找到錯誤,那我們還會怕其他的錯誤嗎?可以說編程是我們在我們這一行業(yè)的一把利劍,如果我們能很好的利用它,我們就會成為這個行業(yè)的真正成功者。也許你會說就算變成好了也不一定成功,是的,但是你不會編程就一定不會成功。如果,我們想成為這個專業(yè)的成功者,我們就得愛上編程,不管他是怎么得乏味,怎么得無聊,我們都不能丟掉他。
總之,動手編程就是鍛煉我們的動手能力,當(dāng)然這個動手能力并不是科研上的動手能力,而是我們的動手編程能力,記住,只要你真正的喜歡上他,你就會發(fā)現(xiàn)其中的樂趣,我相信,只要你堅持下去,你一定會喜歡上他,把編程當(dāng)作自己日常生活中一件必須做的事情。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十三
“數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計”是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的.集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫程序的能力,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
當(dāng)初拿到這次課程設(shè)計題目時,似乎無從下手,但是經(jīng)過分析可知,對于簡單文本編輯器來說功能有限,不外乎創(chuàng)作文本、顯示文本、統(tǒng)計文本中字母—數(shù)字—空格—特殊字符—文本總字?jǐn)?shù)、查找、刪除及插入這幾項功能。于是,我進行分模塊進行編寫程序。雖然每個模塊程序并不大,但是每個模塊都要經(jīng)過一番思考才能搞清其算法思想,只要有了算法思想,再加上c程序語言基礎(chǔ),基本完成功能,但是,每個模塊不可能一次完成而沒有一點錯誤,所以,我給自己定了一個初級目標(biāo):用c語言大體描述每個算法,然后經(jīng)調(diào)試后改掉其中明顯的錯誤,并且根據(jù)調(diào)試結(jié)果改正一些算法錯誤,當(dāng)然,這一目標(biāo)實現(xiàn)較難。最后,經(jīng)過反復(fù)思考,看一下程序是否很完善,如果能夠達到更完善當(dāng)然最好。并非我們最初想到的算法就是最好的算法,所以,有事我們會而不得不在編寫途中終止換用其他算法,但是,我認(rèn)為這不是浪費時間,而是一種認(rèn)識過程,在編寫程序中遇到的問題會為我們以后編寫程序積累經(jīng)驗,避免再犯同樣的錯誤。但是,有的方法不適用于這個程序,或許會適用于另外一個程序。所以,探索的過程是成長的過程,是為成功做的鋪墊。經(jīng)過努力后獲得成功,會更有成就感。
在課程設(shè)計過程中通過獨立解決問題,首先分析設(shè)計題目中涉及到的數(shù)據(jù)類型,在我們學(xué)習(xí)的數(shù)據(jù)存儲結(jié)構(gòu)中不外乎線性存儲結(jié)構(gòu)及非線性存儲結(jié)構(gòu),非線性存儲結(jié)構(gòu)中有樹型,集合型,圖型等存儲結(jié)構(gòu),根據(jù)數(shù)據(jù)類型設(shè)計數(shù)據(jù)結(jié)點類型。然后根據(jù)設(shè)計題目的主要任務(wù),設(shè)計出程序大體輪廓(包括子函數(shù)和主函數(shù)),然后對每個子函數(shù)進行大體設(shè)計,過程中錯誤在所難免,所以要經(jīng)過仔細(xì)探索,對每個函數(shù)進行改進。
程序基本完成后,功能雖然齊全,但是程序是否完善(例如,輸入數(shù)據(jù)時是否在其范圍之內(nèi),所以加入判斷語句是很有必要的)還需運行測試多次,如有發(fā)現(xiàn)應(yīng)該對其進行改善,當(dāng)然要在力所能及的前提下。
課程設(shè)計過程雖然短暫,但是使我深刻理解數(shù)據(jù)結(jié)構(gòu)和算法課程對編程的重要作用,還有“數(shù)據(jù)結(jié)構(gòu)與算法”還提供了一些常用的基本算法思想及算法的編寫程序。通過獨立完成設(shè)計題目,使我系統(tǒng)了解編程的基本步驟,提高分析和解決實際問題的能力。通過實踐積累經(jīng)驗,才能有所創(chuàng)新。正所謂,良好的基礎(chǔ)決定上層建筑。只有基本功做好了,才有可能做出更好的成果。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十四
本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
第二篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會
時光荏苒,如白駒過隙般匆匆而去,眼看的一年實習(xí)生活馬上就要成為美好的回憶。在這短短一年的時間里我感覺自己成長了許多,從象牙塔邁出的第一步走的特別的穩(wěn)重,感謝學(xué)校給我提供了一個努力拼搏的舞臺,讓我學(xué)會了如何面對這個真實的社會,實現(xiàn)了從在校學(xué)子向職場人士的轉(zhuǎn)變。
實習(xí)是繼中考后又一個人生的十字路口,它意味著人生一個新時期的到來——告別學(xué)校走入社會。社會是個大的集合,不管是以前的學(xué)校還是現(xiàn)在的實習(xí)單位都同屬這個集合。這幾個月來,給我感覺學(xué)校純一點,單位復(fù)雜一點。不過我知道不論學(xué)校還是單位其實都是社會的縮影。實習(xí)的真正目的就是讓我們這些在校的學(xué)生走入社會。社會是形形色色、方方面面的,你要學(xué)會的是適應(yīng)這個社會而不是讓這個社會適應(yīng)你。
剛剛走進社會不適應(yīng)是正常的。人有的時候很奇怪:心情或者更準(zhǔn)確地說是熱情往往會因時間、環(huán)境、所經(jīng)歷的事而起伏。就像我對境界一詞的理解:人與他所受教育、所處環(huán)境、所經(jīng)歷對事物的理解、判斷、預(yù)知的程度就是這個人的境界。
作為一名中專生,專業(yè)需求的建筑認(rèn)識實訓(xùn)開始了,我們?nèi)珜I(yè)的同學(xué)在xx的各大建筑工地認(rèn)識實習(xí),對于我當(dāng)初選擇土木工程這樣的專業(yè),說真的我并不知道什么是土木工程?,F(xiàn)在我對土木工程有了基本的感性認(rèn)識了,我想任何事的認(rèn)識都是通過感性認(rèn)識上升到理性認(rèn)識的,這次認(rèn)識實習(xí)應(yīng)該是一個鍛煉的好機會!
土木工程是建造各類工程設(shè)施的學(xué)科、技術(shù)和工程的總稱。它既指與與人類生活、生產(chǎn)活動有關(guān)的各類工程設(shè)施,如建筑公程、公路與城市道路工程、鐵路工程、橋梁工程、隧道工程等,也指應(yīng)用材料、設(shè)備在土地上所進行的勘測、設(shè)計、施工等工程技術(shù)活動。
我應(yīng)該知道現(xiàn)在的我還不夠成熟,如果說人生是一片海洋,那么我應(yīng)該在這片海洋里劈波斬浪,揚帆遠航而不是躲在避風(fēng)港里。只要經(jīng)歷多了,我就會成熟;我就會變強。我相信。那時的成功是領(lǐng)導(dǎo)、師傅們給我鼓勵,是實習(xí)的經(jīng)歷給我力量,所以我感謝領(lǐng)導(dǎo)師傅還有我的好朋友們,也感謝學(xué)校給我這次實習(xí)的機會。
一年的實習(xí)生活中,緊張過,努力過,醒悟過,開心過。這些從為有過的經(jīng)歷讓我進步了,成長了。學(xué)會了一些在學(xué)校從未學(xué)過以后也學(xué)不到的東西,也有很多的感悟。
第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計心得體會
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門知識,純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。
純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。我選的上機題目是交叉合并兩個鏈表,對這個題目,我選的上機題目是交叉合并兩個鏈表,對這個題目,我覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯調(diào)試代碼的時候誤,導(dǎo)致整個程序不能運行,然而開始的我還沒從暑假的狀導(dǎo)致整個程序不能運行,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,甚至想到了放棄,但我最終找到了狀態(tài),一步一步慢慢來,放棄,但我最終找到了狀態(tài),一步一步慢慢來,經(jīng)過無數(shù)次的檢查程序錯誤的原因后慢慢懂得了耐心是一個人成功的必然具備的條件!
決問題和在老師的幫助下一步一步慢慢的正確運行程序,決問題和在老師的幫助下一步一步慢慢的正確運行程序,終于完成了這次課程設(shè)計,于完成了這次課程設(shè)計,雖然這次課程設(shè)計結(jié)束了但是總覺得自已懂得的知識很是不足,學(xué)無止境,得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努力深入的學(xué)習(xí)。力深入的學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十五
設(shè)計結(jié)束后要寫出課程設(shè)計報告,以作為整個課程設(shè)計評分的書面依據(jù)和存檔材料。設(shè)計報告以規(guī)定格式的電子文檔書寫,打印并裝訂,排版及圖,表要清楚,工整。裝訂順序如下:封面、目錄、正文。正文包括以下7個內(nèi)容:
1、需求分析
陳述說明程序設(shè)計的任務(wù),強調(diào)的是程序要做什么,需要什么結(jié)果、所能達到的功能。
2、概要設(shè)計
實現(xiàn)概要設(shè)計中定義的所有數(shù)據(jù)類型,對每個操作只需要寫出偽碼算法;對主程序和其他模塊也都需要寫出偽碼算法(偽碼算法達到的詳細(xì)程度建議為:按照偽碼算法可以在計算機鍵盤直接輸入高級程序設(shè)計語言程序);可采用流程圖、ns圖進行描述,畫出函數(shù)和過程的調(diào)用關(guān)系圖。
4、調(diào)試分析
內(nèi)容包括:
c.經(jīng)驗和體會等。5.測試結(jié)果
列出你的測試結(jié)果,包括輸入和輸出。這里的測試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于需求分析中所列。
6、參考文獻
列出參考的相關(guān)資料和書籍。
封面格式如下:
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告
班級:________________________
姓名:____________________
指導(dǎo)教師:___________________
成績:__________________________
信息工程學(xué)院
年月日
目錄
1、需求分析………………………………………………
22.概要設(shè)計………………………………………………2
3、詳細(xì)設(shè)計………………………………………………2
4、調(diào)試分析………………………………………………2
附錄……………………………………………………
一、需求分析
二、概要設(shè)計
三、詳細(xì)設(shè)計
四、調(diào)試分析
五、測試結(jié)果
六、參考文獻
七、附錄
附錄為程序代碼!4
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十六
優(yōu)秀作文推薦:課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)學(xué)生的集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)與算法”理論和實驗課程后進行的一次全面的綜合練習(xí)。其目的是要達到理論與實際應(yīng)用相結(jié)合,使學(xué)生能夠根據(jù)問題要求和數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)良好的程序設(shè)計技能。
在這次課程設(shè)計當(dāng)中,我了解到了我的不足,如算法的不完善、不細(xì)心和耐心不是很好等等。不細(xì)心的我在調(diào)試程序時,老是因為某個書寫錯誤導(dǎo)致錯誤;對這些錯誤,我不得不花大量的時間去更正,并且還要重復(fù)檢查是否出現(xiàn)雷同的錯誤而導(dǎo)致程序不能運行。但是通過這次課程設(shè)計,我的這些缺點有些改善。我在寫新的程序時,首先要考慮的深入一點、仔細(xì)一點,這樣要修改程序的時間就會少很多。并且也不會因為自己不細(xì)心而導(dǎo)致的浪費時間的情況出現(xiàn)。
在進行程序設(shè)計時,要注意想好思路。即要有恰當(dāng)模塊名、變量名、常量名、子程序名等。將每個功能的模塊,即函數(shù)名要清晰的表述出來,使用戶能夠一目了然此程序的功能。當(dāng)然適當(dāng)?shù)?給寫注釋,也是方便用戶的理解。還有在編寫程序時要注意對程序的適當(dāng)分配,便于用戶看懂程序,也便于自己檢查城市。但是完成任何一個較大的程序,都需要掌握一定的編程基礎(chǔ),需要不斷的探索和求知過程,這樣對自己編程能力的提高有較大的幫助。當(dāng)然,任何程序必須經(jīng)過計算機的調(diào)試,看是否調(diào)試成功,發(fā)現(xiàn)錯誤,一個個,一步步去解決,這樣就能從錯誤中進步。
通過課程設(shè)計加強了我的動手能力,以及提升了局部和統(tǒng)一考慮問題的思維方式?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個月的日子里,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。
通過這次的課程設(shè)計,我學(xué)到了怎么樣從一個實際問題出發(fā),建立模型,找到相應(yīng)的存儲結(jié)構(gòu)和實現(xiàn)方法,實際運行,反復(fù)調(diào)試和修改,最終實現(xiàn)功能。在程序設(shè)計方法以及上機操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練,學(xué)會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來并用軟件解決問題,培養(yǎng)了良好的程序設(shè)計技能。
在這次課程設(shè)計中,得到了好多同學(xué)的幫助以及老師的指導(dǎo),在此要表達我真誠的謝意!
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十七
本次課程設(shè)計所用到的知識完全是上學(xué)期的知識,通過這次課程設(shè)計,我認(rèn)識到了我對數(shù)據(jù)結(jié)構(gòu)這門課的掌握程度。
首先我這個課程設(shè)計是關(guān)于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關(guān)于二叉樹的知識有溫習(xí)了一遍,還好并沒有忘掉。二叉樹這章節(jié)難度中上等,而且內(nèi)容廣泛,所以我只掌握了百分之六七十。
然后,在編程中我認(rèn)識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認(rèn)識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學(xué)之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學(xué)會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關(guān)于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復(fù)雜。以前,沒動手編程的時候覺得這些知識很容易,現(xiàn)在編程了才發(fā)現(xiàn)自己錯了,大錯特錯了,我們這個專業(yè)最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業(yè)了。計算機這個專業(yè)就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業(yè)的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發(fā)現(xiàn)里面的樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”??梢哉f只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當(dāng)作我們不可或缺的好朋友。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十八
數(shù)據(jù)結(jié)構(gòu)是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機科學(xué)的核心課程,而且也已經(jīng)成為其他理工專業(yè)的熱門選修課。隨著高級語言的發(fā)展,數(shù)據(jù)結(jié)構(gòu)在計算機的研究和應(yīng)用中已展現(xiàn)出強大的生命力,它兼顧了諸多高級語言的特點,是一種典型的結(jié)構(gòu)化程序設(shè)計語言,它處理能力強,使用靈活方便,應(yīng)用面廣,具有良好的可移植性。
緊張的兩周數(shù)據(jù)結(jié)構(gòu)實訓(xùn)很快就過去了,通過這兩周的實踐學(xué)習(xí),不僅使我們鞏固了以前的知識并在此基礎(chǔ)上還對數(shù)據(jù)結(jié)構(gòu)的特點和算法有了更深的了解,使我們在這門課程的實際應(yīng)用上也有了一個提高。
首先這兩周的學(xué)習(xí),使我們在鞏固了原有的理論知識上,又培養(yǎng)了靈活運用和組成所學(xué)過知識及技能來分析、解決實際問題的能力,使我們體會到自身知識和能力在實際中的應(yīng)用和發(fā)揮。
其次,它激發(fā)了我們創(chuàng)新意識,開發(fā)創(chuàng)造的能力和培養(yǎng)溝通能力。另外,讓我們進一步熟悉了數(shù)據(jù)結(jié)構(gòu)的設(shè)計應(yīng)用。每一處編碼都是在反復(fù)的熟悉數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)特性,及其語法、函數(shù)和程序設(shè)計思想的過程,對我們數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)和提高很有益處,并且使我們明白了程序設(shè)計過程,如解決一些實際問題,從解決實際問題的角度,我們可以這樣來看:
第一要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;
第二,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個過程中,可確定所需的數(shù)據(jù)結(jié)構(gòu)的基本類型——線性表、棧、隊列、串、數(shù)組、廣義表、樹和二叉樹以及圖等,然后確定處理過程——算法,通過在編譯環(huán)境中的編譯與調(diào)試,可到最終的程序。最后,在這次的實訓(xùn)過程中,我們深刻的認(rèn)識到了自己在學(xué)習(xí)方面的不足之處,我知道我還有太多的基本的思想沒有真正的理解,當(dāng)然我們不會灰心,我們會在以后的日子里努力彌補我們的不足。
在兩周的實訓(xùn)中,我們也體會到了團隊合作的重要性,從最初的查閱資料到最后的程序的成功運行,我們組有過山窮水盡的困惑;有過柳暗花明的驚喜;有過唇槍舌劍的辯論;有過相互鼓勵的安慰。兩個禮拜的時間我們經(jīng)歷了很多,也收獲了很多。與其說這次的實訓(xùn)是體力與腦力的作業(yè),不如說它是合作精神和毅力的考驗。經(jīng)過這次課程設(shè)計,我們不僅學(xué)到了很多知識和技能,更重要的是我們學(xué)會了如何運用所學(xué)知識去解決實際問題。
總之,兩個禮拜的課程設(shè)計讓我們受益匪淺。我們深深認(rèn)識到,要學(xué)好一門學(xué)科,沒有刻苦鉆研的精神是不行的,只有在不斷的嘗試中,經(jīng)歷失敗,從失敗中經(jīng)驗,然后再不斷的嘗試,才能獲得成功。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇十九
我的課程設(shè)計題目是線索二叉樹的運算。剛開始做這個程序的時候,感到完全無從下手,甚至讓我覺得完成這次程序設(shè)計根本就是不可能的,于是開始查閱各種資料以及參考文獻,之后便開始著手寫程序,寫完運行時有很多問題。特別是實現(xiàn)線索二叉樹的刪除運算時很多情況沒有考慮周全,經(jīng)常運行出現(xiàn)錯誤,但通過同學(xué)間的幫助最終基本解決問題。
在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。并對vc有了更深入的了解?!稊?shù)據(jù)結(jié)構(gòu)》是一門實踐性很強的課程,上機實習(xí)是對學(xué)生全面綜合素質(zhì)進行訓(xùn)練的一種最基本的方法,是與課堂聽講、自學(xué)和練習(xí)相輔相成的、必不可少的一個教學(xué)環(huán)節(jié)。上機實習(xí)一方面能使書本上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的;另一方面,上機實習(xí)是對學(xué)生軟件設(shè)計的綜合能力的訓(xùn)練,包括問題分析,總體結(jié)構(gòu)設(shè)計,程序設(shè)計基本技能和技巧的訓(xùn)練。此外,還有更重要的一點是:機器是比任何教師更嚴(yán)厲的檢查者。因此,在“數(shù)據(jù)結(jié)構(gòu)”的學(xué)習(xí)過程中,必須嚴(yán)格按照老師的要求,主動地、積極地、認(rèn)真地做好每一個實驗,以不斷提高自己的編程能力與專業(yè)素質(zhì)。
通過這段時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。
總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認(rèn)識。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十
這是一門純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。剛開始學(xué)的時候確實有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運行自己的'程序。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十一
這學(xué)期開始兩周時間是我們自己選題上機的時間,這學(xué)期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。上機時間只有短短兩個星期但從中確實學(xué)到了不少知識。
數(shù)據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,據(jù)結(jié)構(gòu)可以說是計算機里一門基礎(chǔ)課程,但我覺得我們一低計算機里一門基礎(chǔ)課程定要把基礎(chǔ)學(xué)扎實,定要把基礎(chǔ)學(xué)扎實,然而這次短短的上機幫我又重新鞏固了c語言知識,讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門語言知識讓我的水平又一部的提高。數(shù)據(jù)結(jié)構(gòu)這是一門知識,純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。
純屬于設(shè)計的科目,它需用把理論變?yōu)樯蠙C調(diào)試。它對我們來說具有一定的難度。它是其它編程語言的一門基本學(xué)科。來說具有一定的難度。它是其它編程語言的'一門基本學(xué)科。我選的上機題目是交叉合并兩個鏈表,對這個題目,我選的上機題目是交叉合并兩個鏈表,對這個題目,我覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯覺得很基礎(chǔ)。剛開始調(diào)試代碼的時候有時就是一個很小的錯調(diào)試代碼的時候誤,導(dǎo)致整個程序不能運行,然而開始的我還沒從暑假的狀導(dǎo)致整個程序不能運行,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,態(tài)轉(zhuǎn)到學(xué)習(xí)上,每當(dāng)程序錯誤時我都非常焦躁,甚至想到了放棄,但我最終找到了狀態(tài),一步一步慢慢來,放棄,但我最終找到了狀態(tài),一步一學(xué)無止境,得自已懂得的知識很是不足,學(xué)無止境,以后還會更加的努力深入的學(xué)習(xí)。力深入的學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十二
數(shù)據(jù)結(jié)構(gòu)與算法(data structures)
計算機技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標(biāo)志,并逐步滲透到人類生活的各個領(lǐng)域。隨著計算機硬件的發(fā)展,對計算機軟件的發(fā)展也提出了越來越高的要求。由于軟件的核心是算法,而算法實際上是對加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對提高編程能力和設(shè)計高性能的算法是至關(guān)重要的。
非數(shù)值計算問題的數(shù)學(xué)模型不再是傳統(tǒng)的數(shù)學(xué)方程問題,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,簡單地說,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題的學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。
一、教學(xué)目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);
教學(xué)要求在每章教學(xué)內(nèi)容給出,大體上為三個層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學(xué)會所學(xué)知識,熟練掌握就是運用所學(xué)知識解決實際問題。
教學(xué)目的為:了解算法對于程序設(shè)計的重要性 ; 學(xué)習(xí)掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用算法的設(shè)計。了解算法分析方法。
二、教學(xué)重點與難點--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法。
1、鏈表插入、刪除運算的算法。算法時間復(fù)雜度
2、后綴表達式的算法,數(shù)制的換算
利用本章的基本知識設(shè)計相關(guān)的應(yīng)用問題
3、循環(huán)隊列的特點及判斷溢出的條件
利用隊列的特點設(shè)計相關(guān)的應(yīng)用問題
4、串的模式匹配運算算法
5、二叉樹遍歷算法的設(shè)計
利用二叉樹遍歷算法,解決簡單應(yīng)用問題 哈夫曼樹的算法
6、圖的遍歷
最小生成樹
最短路徑
7、二叉排序樹查找
平衡樹二叉樹
8、堆排序
快速排序 歸并排序
四、教學(xué)內(nèi)容、目標(biāo)與學(xué)時分配
教學(xué)內(nèi)容 教學(xué)目標(biāo) 課時分配
1、緒論
數(shù)據(jù)結(jié)構(gòu)的內(nèi)容
邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)
算法和算法分析
2、線性表
線性表的定義與運算
線性表的順序存儲
線性表的鏈?zhǔn)酱鎯?BR> 3、棧
棧的定義與運算
棧存儲和實現(xiàn)
棧的應(yīng)用舉例
4、隊列
隊列的定義與基本運算
隊列的存儲與實現(xiàn)
隊列的應(yīng)用舉例
5、串
串的定義與基本運算
串的表示與實現(xiàn)
串的基本運算
6、樹和二叉樹
樹的定義和術(shù)語
二叉樹樹的基本概念和術(shù)語 遍歷二叉數(shù)和線索二叉樹
二叉樹的轉(zhuǎn)換
二叉樹的應(yīng)用
哈夫曼樹及其應(yīng)用
7、圖
圖的定義和術(shù)語
圖的存儲結(jié)構(gòu)
圖的遍歷算法
圖的連通性
8、查找
查找的基本概念與靜態(tài)查找 動態(tài)查找
哈希表
了解
了解
掌握
熟練掌握順序表存儲地址的計算
掌握單鏈表的結(jié)構(gòu)特點和基本運算
掌握雙鏈表的結(jié)構(gòu)特點和基本運算
掌握棧的定義與運算
掌握棧的存儲與實現(xiàn)
熟練掌握棧的各種實際應(yīng)用
掌握隊列的定義與基本運算
熟練掌握隊列的存儲與實現(xiàn)
掌握循環(huán)隊列的特征和基本運算
了解串的邏輯結(jié)構(gòu)
掌握串的存儲結(jié)構(gòu)
熟練掌握串的基本運算
了解
了解二叉樹
熟練掌握二叉樹定義和存儲結(jié)構(gòu)
了解二叉樹的遍歷算法
掌握
掌握哈夫曼的建立及編碼
了解
了解
熟練掌握
熟練掌握
了解
熟練掌握
了解哈希表與哈希方法
4學(xué)時
1學(xué)時
1學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
4學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
6學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
12學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
2學(xué)時
8學(xué)時
4學(xué)時
2學(xué)時
2學(xué)時
9、排序
12學(xué)時 插入排序
熟練掌握基本思想
3學(xué)時 快速排序
了解各種內(nèi)部排序方法和特點
3學(xué)時 選擇排序
掌握
2學(xué)時 各種排序方法比較
掌握
2學(xué)時
實驗內(nèi)容 實驗?zāi)繕?biāo) 課時分配 算法編程實驗:
1、用指針方式編寫程序 復(fù)習(xí)c(c++)語言指針、結(jié)構(gòu)體等的用法
2、對單鏈表進行遍歷
鏈表的描述與操作實現(xiàn)
3、棧及其操作
描述方法及操作
4、編寫串子系統(tǒng)1 串的特點及順序定長存儲、操作、查找
5、編寫串子系統(tǒng) 2 串的特點及順序定長存儲、操作、查找
6、編寫樹子系統(tǒng)1 二叉樹的特點及存儲方式、創(chuàng)建、顯示、遍歷等
7、編寫樹子系統(tǒng)2 二叉樹的特點及存儲方式、創(chuàng)建、顯示、遍歷等
8、圖子系統(tǒng)
圖的鄰接矩陣的存儲、遍歷、廣度/深度優(yōu)先搜索
9、查找子系統(tǒng)
理解查找基本算法、平均查找長度、靜態(tài)、動態(tài)查找等
五、考試范圍與題型
1、考試范圍與分?jǐn)?shù)比例
1)緒論
12% 2)線性表
17% 3)棧
7% 4)隊列
6% 5)串
4% 6)樹和二叉樹
14% 7)圖
15% 8)查找
4% 9)排序
21%
2、考試題型與分?jǐn)?shù)比例
1)名詞解釋
18% 2)判斷對錯
16% 3)填空
16% 4)單項選擇
18% 5)應(yīng)用
32%
六、教材與參考資料
1、教材: 實用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(譚浩強)中國鐵道出版社
2、參考資料: 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)實用教程(徐孝凱)清華大學(xué)出版社
(撰寫人:
,審核人: 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時 2學(xué)時)
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十三
談到計算機方面的專業(yè)課程,我覺得數(shù)據(jù)結(jié)構(gòu)算是一門必不可少的課了,它是計算機從業(yè)和研究人員了解、開發(fā)及最大程度的利用計算機硬件的一種工具。數(shù)據(jù)結(jié)構(gòu)與算法分析是兩門緊密聯(lián)系的課程,算法要靠好的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),二者的關(guān)系是密不可分的,談到算法不得不講數(shù)據(jù)結(jié)構(gòu),談數(shù)據(jù)結(jié)構(gòu)也不可避免的要了解算法,好的算法一定有一個好的數(shù)據(jù)結(jié)構(gòu),很多算法實際上是對某種數(shù)據(jù)結(jié)構(gòu)實行的一種變換,研究算法也就是研究在實行變換過程中數(shù)據(jù)的動態(tài)性質(zhì)。這兩門課程分別是我在大二和研一的時候?qū)W的,因為它們密切的聯(lián)系,這里將其放在一起總結(jié)如下。
什么是數(shù)據(jù)結(jié)構(gòu)呢?研究數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)(物理結(jié)構(gòu))以及它們之間的關(guān)系,且為該結(jié)構(gòu)定義相應(yīng)的運算設(shè)計相應(yīng)的算法。這里的數(shù)據(jù)是指可輸入到計算機能被程序處理的符號的集合。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)之間邏輯關(guān)系的描述,邏輯結(jié)構(gòu)的分類有線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)在計算機中存儲結(jié)構(gòu),也稱為物理結(jié)構(gòu),它有4類基本的存儲映射方法:1.順序的方法;2.鏈接的方法;3.索引的方法;4.散列的方法。在程序設(shè)計語言中,數(shù)據(jù)結(jié)構(gòu)直接反映在數(shù)據(jù)類型上,比如一個整型變量就是一個節(jié)點,根據(jù)類型給他分配內(nèi)存單元。抽象數(shù)據(jù)類型:一組值以及在這些值上定義的操作集合,它是描述數(shù)據(jù)結(jié)構(gòu)的一種理論工具,其特點是把數(shù)據(jù)結(jié)構(gòu)作為獨立于應(yīng)用程序的一種抽象代數(shù)結(jié)構(gòu)。
線性表結(jié)構(gòu):由一系列元素組成的有序的序列,除了第一個元素和最后一個元素外,每個元素都只有一個直接前趨和直接后繼,元素的個數(shù)稱為線性表的長度。它的存儲方式有順序存儲和鏈?zhǔn)酱鎯?。順序存儲方式它的?yōu)點是存儲單元是連續(xù)的,適合快速訪問元素內(nèi)容,鏈表的特點是動態(tài)申請內(nèi)存空間,并通過指針來鏈接結(jié)點,按照線性表的前驅(qū)關(guān)系把一個個結(jié)點鏈接起來,這樣可以動態(tài)地根據(jù)需要分配內(nèi)存空間,經(jīng)常用于插入新結(jié)點或刪除節(jié)點的需要,鏈表還可以根據(jù)結(jié)點中指針個數(shù)分為單鏈表、雙鏈表、循環(huán)鏈表等。在線性表結(jié)構(gòu)中有兩類特別的線性表:棧和隊列。棧是一種限制訪問端口的線性表,常稱為后進先出表。正是這種特殊的性質(zhì)使得棧的用途非常廣泛,比如在計算表達式的值時處理運算符的先后次序,另外一個大的用處就是遞歸了,hanoi 塔就是最典型的用了遞歸的思想,在算法中,也有很多運用遞歸思想的例子。隊列也屬于限制訪問點的線性表,它的特點就是加入和刪除元素都只能在隊列的一端進行,即隊列首出,隊列尾進,最大的特點是先來先服務(wù),先進先出。因為這個特點,隊列常被用作消息緩沖器。
在算法設(shè)計中,順序表主要用于檢索,而利用棧中的遞歸思想在算法中則應(yīng)用非常廣泛,如遞歸排序,分治算法等。
樹結(jié)構(gòu):是一種非常重要的非線性數(shù)據(jù)結(jié)構(gòu),它是由一個根結(jié)點和若干葉結(jié)點組成的樹狀結(jié)構(gòu),除了根結(jié)點每個結(jié)點只能有一個父節(jié)點,可以有若干子結(jié)點,若干個樹結(jié)構(gòu)還可以構(gòu)成森林,樹的存儲結(jié)構(gòu)也分為順序存儲和鏈?zhǔn)酱鎯?,最典型的是左孩子右兄弟法。在樹結(jié)構(gòu)中比較重要的算法就是周游(遍歷)樹,有先根次序、后根次序以及中根次序。樹結(jié)構(gòu)中有幾類非常重要的特殊樹結(jié)構(gòu),如二叉樹,b樹,b+樹等,其中,二叉樹應(yīng)用最為廣泛。
二叉樹:是指每個結(jié)點最多有兩個子結(jié)點的樹結(jié)構(gòu),具體細(xì)分,根據(jù)葉子結(jié)點的特性可分為滿二叉樹、完全二叉樹等。二叉樹的遍歷也分為深度優(yōu)先和廣度優(yōu)先。另外,二叉樹有幾條非常重要的性質(zhì),這也使得它的應(yīng)用非常廣泛。
在算法設(shè)計中,典型的利用樹的深度優(yōu)先遍歷的算法是回溯法,而典型的廣度優(yōu)先搜索算法是分枝定界法。
圖:是一種較線性表和樹更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。一般來講,數(shù)據(jù)的邏輯結(jié)構(gòu)可表示為結(jié)點的有窮集合k和k上的一個關(guān)系r,如果對k中結(jié)點相對于r的前驅(qū)、后繼個數(shù)加以限制,則可以分別定義線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu),即:
圖結(jié)構(gòu):不限制前驅(qū)的個數(shù),亦不限制后繼的個數(shù),反映一種網(wǎng)狀關(guān)系。
通常用g=(v,e)代表一個圖,其中v是頂點集,e是邊集。圖分為有向圖和無向圖,圖的存儲方式有鄰接表和鄰接矩陣法。和樹類似的,圖中也需要周游,同樣有深度優(yōu)先搜索和廣度優(yōu)先搜索,而比樹的周游要更復(fù)雜,也更重要。在這一塊中,有兩種比較典型的求最短路徑和最小支撐樹的算法需要注意,它們分別是dijkstra算法和prim算法。另外需要注意的是圖的連通性。
在算法設(shè)計中,典型的用到圖論的算法有貪心算法和動態(tài)規(guī)劃算法。
(1)輸入:有零個或多個由外部提供的量作為算法的輸入。(2)輸出:算法產(chǎn)生至少一個量作為輸出。
(3)確定性:組成算法的每條指令是清晰的,無歧義的。(4)有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時間也是有限的。
我們研究一個算法或者評價一個算法主要是通過估計該算法的復(fù)雜性,包括時間復(fù)雜性和空間復(fù)雜性??臻g復(fù)雜性是指使用該算法的程序在運行時需要占用多少內(nèi)存空間,具體包括指令空間、數(shù)據(jù)空間和環(huán)境棧空間。時間復(fù)雜性是指執(zhí)行該程序所需要的時間量級,通常是估算的時間,包括編譯時間和運行時間。同時評價一個算法的好壞還要看其時間復(fù)雜性和空間復(fù)雜性隨著輸入規(guī)模的增長趨勢,一般能接受的最好是線性增長。在算法設(shè)計這本書中,每介紹一個算法都會分析其算法復(fù)雜度,由此可看出它的重要性。
首先,從遞歸的分治算法開始。分治算法的基本思想是將一個規(guī)模為n的問題分解為k個規(guī)模較小的子問題,這些子問題互相獨立且與原問題相同。遞歸的解這些子問題,然后將各個子問題的解合并得到原問題的解。該算法的主要應(yīng)用有大整數(shù)乘法,矩陣乘法、合并排序等??梢源蟠蠼档退惴ǖ臅r間復(fù)雜度,但使用遞歸??赡茉黾映绦虻目臻g規(guī)模。
動態(tài)規(guī)劃算法和貪心算法:與分治算法類似,動態(tài)規(guī)劃的基本思想也是將待求解問題分解成若干子問題,先求解子問題,然后從這些子問題的解得到原問題的解。與分治算法不同的是,適合于用動態(tài)規(guī)劃法求解的問題,經(jīng)分解得到的子問題往往不是相互獨立的。動態(tài)規(guī)劃算法適用于解最優(yōu)化問題。通??砂匆韵?個步驟:
(1)找出最優(yōu)解的性質(zhì),并刻畫其結(jié)構(gòu)特征。(2)遞歸的定義最優(yōu)值。
(3)以自底向上的方式計算出最優(yōu)值。
(4)根據(jù)計算最優(yōu)值時得到的信息,構(gòu)造最優(yōu)解。
動態(tài)規(guī)劃算法的基本要素是最優(yōu)子結(jié)構(gòu)性質(zhì)和子問題重疊性質(zhì)。
最優(yōu)子結(jié)構(gòu)性質(zhì)。如果問題的最優(yōu)解所包含的子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)(即滿足最優(yōu)化原理)。最優(yōu)子結(jié)構(gòu)性質(zhì)為動態(tài)規(guī)劃算法解決問題提供了重要線索。
子問題重疊性質(zhì)。子問題重疊性質(zhì)是指在用遞歸演算法自頂向下對問題進行求解時,每次產(chǎn)生的子問題并不總是新問題,有些子問題會被重復(fù)計算多次。動態(tài)規(guī)劃算法正是利用了這種子問題的重疊性質(zhì),對每一個子問題只計算一次,然后將其計算結(jié)果保存在一個表格中,當(dāng)再次需要計算已經(jīng)計算過的子問題時,只是在表格中簡單地查看一下結(jié)果,從而獲得較高的效率。
另外一點要素是備忘錄方法,它作為動態(tài)規(guī)劃算法的變形,用表格保存已解決問題的答案,在下次需要解此子問題時,只要簡單查看子問題的解答,而不必重新計算。與動態(tài)規(guī)劃不同的是備忘錄方法的遞歸是自頂向下的,而動態(tài)規(guī)劃則是自底向上的。
動態(tài)規(guī)劃算法設(shè)計策略典型的應(yīng)用案例有:矩陣連乘、最大字段和、流水作業(yè)調(diào)度等。有時滿足動態(tài)規(guī)劃條件的問題可以有更好的算法,比如貪心算法。貪心算法即總是做出在當(dāng)前看來是最好的選擇。也就是說貪心算法并不從整體最優(yōu)上加以考慮,它所做的總是做出的選擇只是在某種意義上的局部最優(yōu)。這種啟發(fā)式的策略并不能總是奏效,然而對某些特定的問題確能達到預(yù)期目的。比如活動安排的例子。
貪心算法的基本要素主要有貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì)。所謂貪心選擇性質(zhì)是指所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心選擇來達到。這是貪心算法與動態(tài)規(guī)劃的主要區(qū)別,它們的共同點是都要求問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。
貪心算法的典型案列是:活動安排、最優(yōu)裝載問題、最短路徑和最優(yōu)生成樹問題。回溯法和分枝定界法:回溯法有“通用的解題法”之稱。用它可以系統(tǒng)的搜索一個問題的所有解或任一解。它在問題的解空間樹中,按深度優(yōu)先策略,從根節(jié)點出發(fā)搜索解空間樹。其算法框架包含遞歸回溯和迭代回溯,兩個特別的解空間樹為子集樹和排列樹。典型的回溯法的案例有:批處理作業(yè)調(diào)度、圖的m著色、旅行售貨員問題、0-1背包問題等。
分枝定界法類似于回溯法,也是在問題的解空間上搜索問題解的算法。一般情況下,分治定界法與回溯法的求解目標(biāo)不同。回溯法的求解目標(biāo)是找出解空間中滿足約束條件的所有 的解,而分枝定界法的求解目標(biāo)則是找出滿足約束條件的一個解,或是滿足約束條件的解中找出使某一目標(biāo)函數(shù)值達到極大或極小的解,即在某種意義下的最優(yōu)解。由于求解目標(biāo)不同,導(dǎo)致分支定界法與回溯法對解空間的搜索方式也不相同?;厮莘ㄒ陨疃葍?yōu)先的方式搜索解空間,而分枝定界法則以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間。
另外,在算法分析中一定要提的是np問題。首先需要介紹p(polynomial,多項式)問題.p問題是可以在多項式時間內(nèi)被確定機(通常意義的計算機)解決的問題。np(non-deterministic polynomial, 非確定多項式)問題,是指可以在多項式時間內(nèi)被非確定機(他可以猜,他總是能猜到最能滿足你需要的那種選擇,如果你讓他解決n皇后問題,他只要猜n次就能完成----每次都是那么幸運)解決的問題.這里有一個著名的問題----千禧難題之首,是說p問題是否等于np問題,也即是否所有在非確定機上多項式可解的問題都能在確定機上用多項式時間求解。
np完全(np complete,npc)問題是指這樣一類np問題,所有的np問題都可以用多項式時間劃歸到他們中的一個。所以顯然np完全的問題具有如下性質(zhì):它可以在多項式時間內(nèi)求解,當(dāng)且僅當(dāng)所有的其他的np-完全問題也可以在多項式時間內(nèi)求解。這樣一來,只要我們找到一個npc問題的多項式解,所有的np問題都可以多項式時間內(nèi)劃歸成這個npc問題,再用多項式時間解決,這樣np就等于p了。
小結(jié)一下,在算法設(shè)計這么課中學(xué)了這么幾大類典型的算法,里面也涉及到具體的應(yīng)用案例,但我覺得學(xué)算法的目的遠不是學(xué)會這幾種固定的特殊問題的解法而已,事實上領(lǐng)會這些巧妙算法背后的思想然后學(xué)會遷移到其他新的問題中去才是領(lǐng)會了算法設(shè)計的精髓。
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計心得體會篇二十四
一、《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》的目標(biāo)
課程設(shè)計是《數(shù)據(jù)結(jié)構(gòu)》課程的一個重要的實踐環(huán)節(jié),它可加深學(xué)生對該課程所學(xué)內(nèi)容的進一步的理解與鞏固,達到理論與實際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力,培養(yǎng)基本的對基本數(shù)據(jù)結(jié)構(gòu)的理解和運用,良好的程序設(shè)計方法、提高編碼及調(diào)試程序技能的能力,為整個專業(yè)的學(xué)習(xí)以及軟件設(shè)計水平的提高打下良好的基礎(chǔ)。
二、設(shè)計內(nèi)容
每位學(xué)生可以從《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計備選題目》中選擇一個題目自行完成。要求每班中題目不能重復(fù)。
三、設(shè)計要求
1.學(xué)生必須仔細(xì)閱讀《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計任務(wù)書》,認(rèn)真主動完成課設(shè)的要求。有問題及時主動通過各種方式與指導(dǎo)教師聯(lián)系溝通。
2.學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時間,安排好課設(shè)的時間計劃,并在課設(shè)過程中不斷檢測自己的計劃完成情況,及時向教師匯報。
3.課程設(shè)計按照教學(xué)要求需要兩周時間完成,學(xué)院安排設(shè)計時
間學(xué)生不得缺席。
4、每位學(xué)生必須認(rèn)真、獨立完成設(shè)計任務(wù),發(fā)現(xiàn)抄襲者或雷同者,一律按零分處理。
5、程序設(shè)計語言可選擇c或c++。
6、程序要正確且具有一定的健壯性,不會因為用戶的輸入錯誤引起程序運行錯誤而中斷執(zhí)行,對輸入值的類型、大小范圍、字符串的長度等,進行正確性檢查,對不合法的輸入值給出出錯信息,指出錯誤類型,等待重新輸入。
四、上交相關(guān)內(nèi)容要求
上交的成果的內(nèi)容必須由以下三個部分組成,缺一不可。
3. 課程設(shè)計報告:(保存在word 文檔中,文件名要求按照“學(xué)號_姓名_課程設(shè)計報告題目”起名,如文件名為“001_張三_二叉樹動態(tài)演示”.doc)。報告要求文字工整通順、圖表規(guī)范、思路清楚、內(nèi)容正確。設(shè)計報告必須按照規(guī)定格式規(guī)范,a4紙雙面打印、裝訂。
將以上三個部分放在一個文件夾里,文件夾名要求按照"學(xué)號_姓名_課程設(shè)計報告題目”.zip命名。每個班將所有學(xué)生的文件夾收集起來刻成光盤上交。
五、時間安排
設(shè)計時間為兩周(7.07—7.18),7月16日—7月18日答辯??己朔绞?BR> 成績按五分制,包括課程設(shè)計過程、課程設(shè)計結(jié)果、課程設(shè)計報告三部分。其中:
課程設(shè)計過程:20%
包括設(shè)計態(tài)度(10分)、出勤(10分)
課程設(shè)計結(jié)果:40%
其中:程序正確性:30分,運行效果:10分,答辯:10分。課程設(shè)計報告:40%
其中:正確性:20分,完整性:10分,規(guī)范性:10分。
六、設(shè)計報告格式
見《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告模板》。

