第一篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
班級:計算機科學(xué)與技術(shù)08計科2班學(xué)號:0804012031姓名:楊松
對于本課程設(shè)計《算術(shù)表達(dá)式求值問題》,在起初分析題目時,只有一個大概的輪廓,包括算術(shù)表達(dá)式的運算規(guī)則,算術(shù)表達(dá)式所用到的數(shù)據(jù)結(jié)構(gòu),即棧,知道并會使用棧的基本運算,了解算術(shù)表達(dá)式求值的基本算法思想,操作數(shù)棧和算符棧的結(jié)合使用。
于是開始著手編寫程序,將上述已經(jīng)明白的知識點通過程序展現(xiàn)出來,包括兩種棧的定義,涉及到的棧的功能函數(shù)的設(shè)計,以及基本的算術(shù)表達(dá)式的簡單計算,才發(fā)現(xiàn),雖然上述基本工作已經(jīng)完成,但對于具體處理算術(shù)表達(dá)式時,出現(xiàn)了很多的語法問題,邏輯問題,包括:怎樣區(qū)分算術(shù)表達(dá)式中的算符和操作數(shù)的問題,怎樣進行優(yōu)先級的判斷和比較問題,怎樣處理非法算符的問題;怎樣處理非法操作數(shù)的問題,怎樣處理括號匹配的問題,怎樣處理操作數(shù)為多位數(shù)的問題,怎樣處理當(dāng)操作數(shù)從正整數(shù)范圍擴充到實數(shù)范圍時的問題,怎樣處理具體調(diào)用功能函數(shù)時出現(xiàn)的問題,怎樣編輯菜單方便用戶的問題,等等;這些問題困擾了我一部分時間,之后,經(jīng)反復(fù)思考,反復(fù)查閱資料,反復(fù)瀏覽網(wǎng)絡(luò),同時與同學(xué)交流討論,請教老師,上述問題均得到了解決。
在解決算法設(shè)計過程中出現(xiàn)的難題之后,程序初步完成,但并不是到此為止,如何改進算法,如何提高算法的時間復(fù)雜度、空間復(fù)雜度,如何處理一些意想不到的錯誤和特有情況,也花了一部份時間。
在進行課程設(shè)計過程中,我發(fā)現(xiàn),獨立思考起到了很關(guān)鍵的作用,在遇到問題時,首先想到的并不是去請教老師,而是回憶所學(xué)的知識點、查閱書本和參考資料,網(wǎng)絡(luò)也起到了一定的輔助作用;在必要時,與同學(xué)交流、討論,交換思想和方法,同時鞏固了知識點;與此同時,請教老師,指導(dǎo)程序的設(shè)計思想和方法。另外,本人的上機操作能力和動手能力明顯提高,思考問題、分析問題的方式得到了改進,解決問題的能力得到了提升,同時在與同學(xué)的交流和積極討論的過程中,不僅鞏固了所學(xué)的知識點,而且設(shè)計算法和程序的方法也有一定程度的提高。
談?wù)劜蛔阒帲敬握n程設(shè)計中,在遇到問題和錯誤時,有時顯得很浮躁,無從下手時,更急于解決問題,瀏覽網(wǎng)絡(luò)資源,卻忘記怎樣結(jié)合所學(xué)知識點來進行思考問題、分析錯誤。所以獨立思考的能力和分析問題、解決問題的能力還有待于提高,知識點的鞏固還需要進一步加強。
第二篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
剛一開始抽到題目,我一看覺得無從下手,由于那個時候很多課都還在進行著,也就是抽空思考一下思路,也到圖書館中借了相關(guān)的書來參考,但沒有進行很深入的研究。課程設(shè)計開始的時候,我開始思考我該如何去求解,確定了算法之后,就開始寫程序,修改錯誤,調(diào)試,直至完成,在這一過程中,讓我學(xué)會了很多東西。
在課程設(shè)計結(jié)束后,我對書本,也就是我們的教材的認(rèn)識有了很大的提高。以前我覺得能看懂書上的知識,能寫出算法就認(rèn)為自己學(xué)的還可以。可是通過課程設(shè)計,通過我對書上知識的研究,我發(fā)現(xiàn)其實書上有很多東西是我沒有領(lǐng)略到的。我的算法的核心思想就是圖的深度優(yōu)先搜索遍歷,在用鄰接表對圖完成存儲之后,我就開始仔細(xì)的看書上有關(guān)圖的遍歷的知識,包括深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷,就那么幾頁紙,我看了不知道多少遍。剛一開始看一下,覺得自己會了,然后做程序,遇到問題再拿書看,沒看一次我對算法的理解就更進了一步。通過這次課程設(shè)計,讓我明白了書上的知識看似是很有限的,但它蘊含的東西值得我們?nèi)セǜ嗟臅r間去研究。學(xué)知識不能只學(xué)表面的知識,做出一個深度優(yōu)先搜索遍歷程序不等于你就掌握了深度優(yōu)先搜索遍歷算法,其他知識也是這樣,其他科目的學(xué)習(xí)也同樣是這樣。學(xué)習(xí)要抓住知識的精髓。
在課程設(shè)計這兩個星期中,讓我明白了獨立思考的重要性。一個東西只有經(jīng)過自己的思考,自己明白了才是真的明白了,別人說的再明白不等于我明白。在思考的過程中,我發(fā)現(xiàn)對一個問題,你思考的月深入,可以挖掘的東西就越多。我做的題目是分酒問題:三個酒杯,一個能裝8kg,一個能裝5kg,一個能裝3kg,8kg是空的,5kg和3kg是滿的,不借助其他工具,最終分出兩個4kg。看似無從下手,但經(jīng)過思考之后我確立了用圖來求解,但是怎樣抽象成圖,抽象成什么樣的圖,模型確立后,圖有很多種存儲結(jié)構(gòu),采用哪一種存儲結(jié)構(gòu)是最優(yōu)的等等問題都要去思考。最終我確定采用鄰接表作為存儲結(jié)構(gòu),圖的深度優(yōu)先搜索遍歷來求解。
獨立思考很重要,跟別人交流也很重要。在我和別人交流的時候,開闊了我的思維空間,很多原先我沒想到的東西一下子就蹦出來了,而且能填補我知識的空白。跟老師交流就更重要了,以老師的知識層面和對問題的見解,他的想法具有很強的針對性和可行性。做好程序后,在寫實驗報告的時候,我發(fā)現(xiàn)在寫實驗報告的過程中,我對我的算法有了更進一步的認(rèn)識,因為我要寫出來,寫出來的實驗報告不僅我自己能看明白,更關(guān)鍵的是別人能看明白。這樣就要求我用簡練的語言來描述我的算法,而且對我的語言組織能力也是一次考驗。
總之,這次課程設(shè)計讓我對數(shù)據(jù)結(jié)構(gòu)有了更深的認(rèn)識,不僅體現(xiàn)在知識上,還體現(xiàn)在對知識的認(rèn)識、對學(xué)習(xí)的認(rèn)識和對方法的認(rèn)識。
第三篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會
課程設(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è)計 心得體會 學(xué)習(xí)體會
課程設(shè)計的心得體會
每一次課程設(shè)計,都有不一樣的感受,通過課程設(shè)計,對我而言,得到的不僅僅是知識,更是獲得知識的方法,這顯得更加的重要。
本次課程設(shè)計,我的設(shè)計題目是校園導(dǎo)游程序,本程序主要用到的是課本中圖的知識,以校園中的景點作為頂點,以景點間的路徑作為邊,就構(gòu)成了圖。我用到的時臨界表存儲結(jié)構(gòu),這樣對空間的浪費不至于很大。主要完成的功能是最短路徑和所有路徑的算法,最短路徑用的是書上的Dijkstra算法,原來我對這個算法的只是出于一個對大致的過程知道的程度,課程設(shè)計之后,我對該算法可以說是很熟悉了,不管是算法思想還是代碼。另一個主要功能是求兩個景點間的所有路徑,這個算法書上沒有提到,我一步步的摸索,用了一個遞歸的思想,再經(jīng)過不斷的修改,一次次的單步運行,通過查看相應(yīng)變量的變化情況,將此算法實現(xiàn)的。最后完成整個程序。
課程設(shè)計,本人感覺對于寫程序,首先要要的是思想,即完成每個功能需要的算法思想,在想好思想后,就要具體到代碼,計算機能夠識別的代碼,代碼寫好后,大多情況下是有錯誤的,首先要排除語法錯誤,然后時語義錯誤,在排錯的過程中,我用到的最多的是單步運行,感覺單步運行這種方式很管用,通過一步步的運行,通過每一步的運行,觀察其中變量的變化情況,可以很容易的知道代碼是哪一步出了錯誤,這樣對排錯有很大的幫助。在課程設(shè)計的過程中,曾遇到過很多的問題,如對路徑字符串的處理,整個遞歸一步步的往下調(diào)用和返回過程,還有很多細(xì)節(jié)的問題。在遇到問題時,首先想到的是自己思考,分析過程,查找資料,上網(wǎng)百度,通過自己的努力還沒有解決時,這是首先需要問的是自己旁邊的同學(xué),和同學(xué)討論,有時還爭得面紅耳赤,如果最后將此不下,就向老師提問。這課程設(shè)計的過程中,我?guī)缀跛械膯栴}處理流程就是這個樣子的。我感覺這就是一種學(xué)習(xí)的方法,在學(xué)習(xí)中遇到難題時的學(xué)習(xí)方法,要把這種學(xué)習(xí)的方法變成一種習(xí)慣,這才是每次課程設(shè)計應(yīng)達(dá)到的一種效果。
課程設(shè)計提供了這樣一種學(xué)習(xí)的機會,可以隨時隨地向老師請教,和老師交流的一個機會,和同學(xué)互相討論的機會。課程設(shè)計教會了我,如何用計算機程序來處理現(xiàn)實中的實際問題。將現(xiàn)實中的實際問題先轉(zhuǎn)化為數(shù)學(xué)模型,然后將數(shù)學(xué)模型用程序解決的一種能力。
第五篇:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 心得體會 學(xué)習(xí)體會(42)
心得體會
通過本次課程設(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