第一篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì) 心得體會(huì) 學(xué)習(xí)體會(huì)(26)
課程設(shè)計(jì)心得體會(huì)
班級(jí):08計(jì)本(2)班學(xué)號(hào):0704011029姓名:韓非
在兩周的課程設(shè)計(jì)里我學(xué)到了很多東西,在這次的實(shí)驗(yàn)過(guò)程中,我對(duì)于計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)的概念、組織形式、實(shí)現(xiàn)方法又有了一個(gè)全新的認(rèn)識(shí)。同時(shí)也學(xué)習(xí)到了很多在基礎(chǔ)課程中學(xué)不到的知識(shí),對(duì)于數(shù)據(jù)機(jī)構(gòu)算法的重要性又有了新的認(rèn)識(shí)。
在這兩周的課程設(shè)計(jì)中,我從自己的題目上向外拓展思維,通過(guò)不同途徑查找了不同的資料,學(xué)習(xí)到了許多知識(shí),例如如何加深對(duì)某個(gè)問(wèn)題的了解,如何獨(dú)立解決問(wèn)題,如何更好的查找到一種最合適的方法來(lái)解決問(wèn)題。
我的課程設(shè)計(jì)題目是:迷宮問(wèn)題,這個(gè)題目剛拿到手時(shí),自己就覺(jué)得有似曾相識(shí)的感覺(jué),首先這個(gè)題目在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)算法時(shí),在棧一節(jié)知識(shí)中有所涉及,于是去翻查了課本,果然在課本上找到了一個(gè)解決方案,書(shū)上是用了棧來(lái)解決這一問(wèn)題。但是通過(guò)題目的提示,和自己的查閱資料發(fā)現(xiàn)這個(gè)題目并不只有一種解法。既可以用棧來(lái)解決這個(gè)問(wèn)題,也可以用隊(duì)列來(lái)解決,當(dāng)然不同的存儲(chǔ)結(jié)構(gòu)對(duì)于解決這個(gè)問(wèn)題具有不同的效果。而具體到解決這個(gè)問(wèn)題的搜索通路的問(wèn)題上時(shí)又可以利用深度優(yōu)先遍歷或者是廣度優(yōu)先遍歷的思想來(lái)解決。而這兩種方法分別需要使用以上兩種不同的存儲(chǔ)方式來(lái)解決問(wèn)題。最后決定使用深度優(yōu)先是遍歷來(lái)解決迷宮問(wèn)題。
通過(guò)課程設(shè)計(jì)我認(rèn)識(shí)到了數(shù)據(jù)結(jié)構(gòu)算法對(duì)于同一個(gè)問(wèn)題具有不同的解決思路,并且這些算法所得到的結(jié)果有易有繁,就看你能否找到一種相對(duì)合適的方法來(lái)解決問(wèn)題。選擇最適方法可以幫助我們找到問(wèn)題的最佳答案。
課程設(shè)計(jì)的過(guò)程中讓我了解到這門(mén)課程的巨大作用,和與其他知識(shí)的緊密聯(lián)系,同時(shí)也看出了這門(mén)課程在解決實(shí)際問(wèn)題中的巨大作用。如果不能夠?qū)?shù)據(jù)結(jié)構(gòu)算法的深刻了解,在解決問(wèn)題時(shí)有可能就不能找到最合適的方法了。
課程設(shè)計(jì)給我一個(gè)對(duì)于數(shù)據(jù)結(jié)構(gòu)算法的加深了解的渠道,給了我們一個(gè)發(fā)揮自身掌握知識(shí)的平臺(tái),和一個(gè)學(xué)習(xí)的機(jī)會(huì)。通過(guò)課程設(shè)計(jì)實(shí)驗(yàn),使我們加深了對(duì)于課程的理解,學(xué)習(xí)更多的知識(shí),掌握了自己解決問(wèn)題的方法和經(jīng)驗(yàn),對(duì)于我們有很大的幫助。
第二篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì) 心得體會(huì) 學(xué)習(xí)體會(huì)
課程設(shè)計(jì)的心得體會(huì)
剛一開(kāi)始抽到題目,我一看覺(jué)得無(wú)從下手,由于那個(gè)時(shí)候很多課都還在進(jìn)行著,也就是抽空思考一下思路,也到圖書(shū)館中借了相關(guān)的書(shū)來(lái)參考,但沒(méi)有進(jìn)行很深入的研究。課程設(shè)計(jì)開(kāi)始的時(shí)候,我開(kāi)始思考我該如何去求解,確定了算法之后,就開(kāi)始寫(xiě)程序,修改錯(cuò)誤,調(diào)試,直至完成,在這一過(guò)程中,讓我學(xué)會(huì)了很多東西。
在課程設(shè)計(jì)結(jié)束后,我對(duì)書(shū)本,也就是我們的教材的認(rèn)識(shí)有了很大的提高。以前我覺(jué)得能看懂書(shū)上的知識(shí),能寫(xiě)出算法就認(rèn)為自己學(xué)的還可以??墒峭ㄟ^(guò)課程設(shè)計(jì),通過(guò)我對(duì)書(shū)上知識(shí)的研究,我發(fā)現(xiàn)其實(shí)書(shū)上有很多東西是我沒(méi)有領(lǐng)略到的。我的算法的核心思想就是圖的深度優(yōu)先搜索遍歷,在用鄰接表對(duì)圖完成存儲(chǔ)之后,我就開(kāi)始仔細(xì)的看書(shū)上有關(guān)圖的遍歷的知識(shí),包括深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷,就那么幾頁(yè)紙,我看了不知道多少遍。剛一開(kāi)始看一下,覺(jué)得自己會(huì)了,然后做程序,遇到問(wèn)題再拿書(shū)看,沒(méi)看一次我對(duì)算法的理解就更進(jìn)了一步。通過(guò)這次課程設(shè)計(jì),讓我明白了書(shū)上的知識(shí)看似是很有限的,但它蘊(yùn)含的東西值得我們?nèi)セǜ嗟臅r(shí)間去研究。學(xué)知識(shí)不能只學(xué)表面的知識(shí),做出一個(gè)深度優(yōu)先搜索遍歷程序不等于你就掌握了深度優(yōu)先搜索遍歷算法,其他知識(shí)也是這樣,其他科目的學(xué)習(xí)也同樣是這樣。學(xué)習(xí)要抓住知識(shí)的精髓。
在課程設(shè)計(jì)這兩個(gè)星期中,讓我明白了獨(dú)立思考的重要性。一個(gè)東西只有經(jīng)過(guò)自己的思考,自己明白了才是真的明白了,別人說(shuō)的再明白不等于我明白。在思考的過(guò)程中,我發(fā)現(xiàn)對(duì)一個(gè)問(wèn)題,你思考的月深入,可以挖掘的東西就越多。我做的題目是分酒問(wèn)題:三個(gè)酒杯,一個(gè)能裝8kg,一個(gè)能裝5kg,一個(gè)能裝3kg,8kg是空的,5kg和3kg是滿的,不借助其他工具,最終分出兩個(gè)4kg??此茻o(wú)從下手,但經(jīng)過(guò)思考之后我確立了用圖來(lái)求解,但是怎樣抽象成圖,抽象成什么樣的圖,模型確立后,圖有很多種存儲(chǔ)結(jié)構(gòu),采用哪一種存儲(chǔ)結(jié)構(gòu)是最優(yōu)的等等問(wèn)題都要去思考。最終我確定采用鄰接表作為存儲(chǔ)結(jié)構(gòu),圖的深度優(yōu)先搜索遍歷來(lái)求解。
獨(dú)立思考很重要,跟別人交流也很重要。在我和別人交流的時(shí)候,開(kāi)闊了我的思維空間,很多原先我沒(méi)想到的東西一下子就蹦出來(lái)了,而且能填補(bǔ)我知識(shí)的空白。跟老師交流就更重要了,以老師的知識(shí)層面和對(duì)問(wèn)題的見(jiàn)解,他的想法具有很強(qiáng)的針對(duì)性和可行性。做好程序后,在寫(xiě)實(shí)驗(yàn)報(bào)告的時(shí)候,我發(fā)現(xiàn)在寫(xiě)實(shí)驗(yàn)報(bào)告的過(guò)程中,我對(duì)我的算法有了更進(jìn)一步的認(rèn)識(shí),因?yàn)槲乙獙?xiě)出來(lái),寫(xiě)出來(lái)的實(shí)驗(yàn)報(bào)告不僅我自己能看明白,更關(guān)鍵的是別人能看明白。這樣就要求我用簡(jiǎn)練的語(yǔ)言來(lái)描述我的算法,而且對(duì)我的語(yǔ)言組織能力也是一次考驗(yàn)。
總之,這次課程設(shè)計(jì)讓我對(duì)數(shù)據(jù)結(jié)構(gòu)有了更深的認(rèn)識(shí),不僅體現(xiàn)在知識(shí)上,還體現(xiàn)在對(duì)知識(shí)的認(rèn)識(shí)、對(duì)學(xué)習(xí)的認(rèn)識(shí)和對(duì)方法的認(rèn)識(shí)。
第三篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì) 心得體會(huì) 學(xué)習(xí)體會(huì)
課程設(shè)計(jì)的心得體會(huì)
陳康蔭080401200708級(jí)計(jì)科系計(jì)本(2)班
完成了這次的二元多項(xiàng)式加減運(yùn)算問(wèn)題的課程設(shè)計(jì)后,我的心得體會(huì)很多,細(xì)細(xì)梳理一下,有以下幾點(diǎn):
1、程序的編寫(xiě)中的語(yǔ)法錯(cuò)誤及修改
因?yàn)槲以诮鉀Q二元多項(xiàng)式問(wèn)題中,使用了鏈表的方式建立的二元多項(xiàng)式,所以程序的空間是動(dòng)態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點(diǎn),所以使得程序得到簡(jiǎn)化。但是出現(xiàn)的語(yǔ)法問(wèn)題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書(shū)寫(xiě),以及一些庫(kù)函數(shù)的規(guī)范使用,這些問(wèn)題均可以根據(jù)編譯器的警告提示,對(duì)應(yīng)的將其解決。
2、程序的設(shè)計(jì)中的邏輯問(wèn)題及其調(diào)整
我在設(shè)計(jì)程序的過(guò)程中遇到許多問(wèn)題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時(shí)候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時(shí)候,按某種順序?qū)Φ诙P(guān)鍵字進(jìn)行排序。在此程序中共涉及到3個(gè)量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來(lái)看,由于要求是降冪排序且含有2個(gè)關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來(lái)排序,當(dāng)x的指數(shù)相同時(shí),再以y為關(guān)鍵字,按照y的指數(shù)大小來(lái)進(jìn)行降序排列。
另外,我在加法函數(shù)的編寫(xiě)過(guò)程中也遇到了大量的問(wèn)題,由于要同時(shí)比較多個(gè)關(guān)鍵字,而且設(shè)計(jì)中涉及了數(shù)組和鏈表的綜合運(yùn)用,導(dǎo)致反復(fù)修改了很長(zhǎng)的時(shí)間才完成了一個(gè)加法的設(shè)計(jì)。但是,現(xiàn)在仍然有一個(gè)問(wèn)題存在:若以0為系數(shù)的項(xiàng)是首項(xiàng)則顯示含有此項(xiàng),但是運(yùn)算后則自動(dòng)消除此項(xiàng),這樣是正確的。但是當(dāng)其不是首項(xiàng)的時(shí)候,加法函數(shù)在顯示的時(shí)候有0為系數(shù)的項(xiàng)時(shí),0前邊不顯示符號(hào),當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時(shí),忽略這一項(xiàng)。這也是本程序中一個(gè)不完美的地方。
我在設(shè)計(jì)減法函數(shù)的時(shí)候由于考慮不夠充分就直接編寫(xiě)程序,走了很多彎路,不得不停下來(lái)仔細(xì)研究算法,后來(lái)發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過(guò)是將二元多項(xiàng)式B的所有項(xiàng)取負(fù)再用加法函數(shù)即可,可見(jiàn)算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗(yàn)及體會(huì)
我在調(diào)試過(guò)程中,發(fā)生了許多小細(xì)節(jié)上的問(wèn)題,它們提醒了自己在以后編程的時(shí)候要注意細(xì)節(jié),即使是一個(gè)括號(hào)的遺漏或者一個(gè)字符的誤寫(xiě)都會(huì)造成大量的錯(cuò)誤,浪費(fèi)許多時(shí)間去尋找并修改,總結(jié)的教訓(xùn)就是寫(xiě)程序的時(shí)候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個(gè)很深的體會(huì)就是格式和注釋,由于平時(shí)不注意格式和注釋這方面的要求,導(dǎo)致有的時(shí)候在檢查和調(diào)試的時(shí)候很不方便。有的時(shí)候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時(shí)候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點(diǎn),就是在修改的時(shí)候,要注意修改前后的不同點(diǎn)在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
第四篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì) 心得體會(huì) 學(xué)習(xí)體會(huì)
課程設(shè)計(jì)的心得體會(huì)
每一次課程設(shè)計(jì),都有不一樣的感受,通過(guò)課程設(shè)計(jì),對(duì)我而言,得到的不僅僅是知識(shí),更是獲得知識(shí)的方法,這顯得更加的重要。
本次課程設(shè)計(jì),我的設(shè)計(jì)題目是校園導(dǎo)游程序,本程序主要用到的是課本中圖的知識(shí),以校園中的景點(diǎn)作為頂點(diǎn),以景點(diǎn)間的路徑作為邊,就構(gòu)成了圖。我用到的時(shí)臨界表存儲(chǔ)結(jié)構(gòu),這樣對(duì)空間的浪費(fèi)不至于很大。主要完成的功能是最短路徑和所有路徑的算法,最短路徑用的是書(shū)上的Dijkstra算法,原來(lái)我對(duì)這個(gè)算法的只是出于一個(gè)對(duì)大致的過(guò)程知道的程度,課程設(shè)計(jì)之后,我對(duì)該算法可以說(shuō)是很熟悉了,不管是算法思想還是代碼。另一個(gè)主要功能是求兩個(gè)景點(diǎn)間的所有路徑,這個(gè)算法書(shū)上沒(méi)有提到,我一步步的摸索,用了一個(gè)遞歸的思想,再經(jīng)過(guò)不斷的修改,一次次的單步運(yùn)行,通過(guò)查看相應(yīng)變量的變化情況,將此算法實(shí)現(xiàn)的。最后完成整個(gè)程序。
課程設(shè)計(jì),本人感覺(jué)對(duì)于寫(xiě)程序,首先要要的是思想,即完成每個(gè)功能需要的算法思想,在想好思想后,就要具體到代碼,計(jì)算機(jī)能夠識(shí)別的代碼,代碼寫(xiě)好后,大多情況下是有錯(cuò)誤的,首先要排除語(yǔ)法錯(cuò)誤,然后時(shí)語(yǔ)義錯(cuò)誤,在排錯(cuò)的過(guò)程中,我用到的最多的是單步運(yùn)行,感覺(jué)單步運(yùn)行這種方式很管用,通過(guò)一步步的運(yùn)行,通過(guò)每一步的運(yùn)行,觀察其中變量的變化情況,可以很容易的知道代碼是哪一步出了錯(cuò)誤,這樣對(duì)排錯(cuò)有很大的幫助。在課程設(shè)計(jì)的過(guò)程中,曾遇到過(guò)很多的問(wèn)題,如對(duì)路徑字符串的處理,整個(gè)遞歸一步步的往下調(diào)用和返回過(guò)程,還有很多細(xì)節(jié)的問(wèn)題。在遇到問(wèn)題時(shí),首先想到的是自己思考,分析過(guò)程,查找資料,上網(wǎng)百度,通過(guò)自己的努力還沒(méi)有解決時(shí),這是首先需要問(wèn)的是自己旁邊的同學(xué),和同學(xué)討論,有時(shí)還爭(zhēng)得面紅耳赤,如果最后將此不下,就向老師提問(wèn)。這課程設(shè)計(jì)的過(guò)程中,我?guī)缀跛械膯?wèn)題處理流程就是這個(gè)樣子的。我感覺(jué)這就是一種學(xué)習(xí)的方法,在學(xué)習(xí)中遇到難題時(shí)的學(xué)習(xí)方法,要把這種學(xué)習(xí)的方法變成一種習(xí)慣,這才是每次課程設(shè)計(jì)應(yīng)達(dá)到的一種效果。
課程設(shè)計(jì)提供了這樣一種學(xué)習(xí)的機(jī)會(huì),可以隨時(shí)隨地向老師請(qǐng)教,和老師交流的一個(gè)機(jī)會(huì),和同學(xué)互相討論的機(jī)會(huì)。課程設(shè)計(jì)教會(huì)了我,如何用計(jì)算機(jī)程序來(lái)處理現(xiàn)實(shí)中的實(shí)際問(wèn)題。將現(xiàn)實(shí)中的實(shí)際問(wèn)題先轉(zhuǎn)化為數(shù)學(xué)模型,然后將數(shù)學(xué)模型用程序解決的一種能力。
第五篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì) 心得體會(huì) 學(xué)習(xí)體會(huì)(42)
心得體會(huì)
通過(guò)本次課程設(shè)計(jì),對(duì)圖的概念有了一個(gè)新的認(rèn)識(shí),在學(xué)習(xí)離散數(shù)學(xué)的時(shí)候,總覺(jué)得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門(mén)課程之后,我慢慢地體會(huì)到了其中的奧妙,圖能夠在計(jì)算機(jī)中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說(shuō)權(quán)值、頂點(diǎn)個(gè)數(shù)等,這也就說(shuō)明了想要把生活中的信息轉(zhuǎn)化到計(jì)算機(jī)中必須用數(shù)字來(lái)完整的構(gòu)成一個(gè)信息庫(kù),而圖的存在,又涉及到了頂點(diǎn)之間的聯(lián)系。圖分為有向圖和無(wú)向圖,而無(wú)向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計(jì)算機(jī)中表示一個(gè)雙向權(quán)值不同的圖,這就是一件很巧妙的事情,經(jīng)過(guò)了思考和老師同學(xué)的幫助,我用edges[i][j]=up和edges[j][i]=up就能實(shí)現(xiàn)了一個(gè)雙向圖信息的存儲(chǔ)。
對(duì)整個(gè)程序而言,Dijkstra算法始終都是核心內(nèi)容,其實(shí)這個(gè)算法在實(shí)際思考中并不難,也許我們誰(shuí)都知道找一個(gè)路徑最短的方法,及從頂點(diǎn)一步一步找最近的路線并與其直接距離相比較,但是,在計(jì)算機(jī)中實(shí)現(xiàn)這么一個(gè)很簡(jiǎn)單的想法就需要涉及到很多專業(yè)知識(shí),為了完成設(shè)計(jì),在前期工作中,基本都是以學(xué)習(xí)C語(yǔ)言為主,所以浪費(fèi)了很多時(shí)間,比如說(shuō)在程序中,刪除頂點(diǎn)和增加頂點(diǎn)的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見(jiàn)在調(diào)用知識(shí)點(diǎn),我沒(méi)有掌握好。不過(guò),有了這次課程設(shè)計(jì)的經(jīng)驗(yàn)和教訓(xùn),我能夠很清楚的對(duì)自己定一個(gè)合適的水平,而且在這次課程設(shè)計(jì)中我學(xué)會(huì)了運(yùn)用兩個(gè)新的函數(shù)sprintf()和包涵在#include