第一篇:數據結構與算法課程設計 心得體會 學習體會
課程設計的心得體會
每一次課程設計,都有不一樣的感受,通過課程設計,對我而言,得到的不僅僅是知識,更是獲得知識的方法,這顯得更加的重要。
本次課程設計,我的設計題目是校園導游程序,本程序主要用到的是課本中圖的知識,以校園中的景點作為頂點,以景點間的路徑作為邊,就構成了圖。我用到的時臨界表存儲結構,這樣對空間的浪費不至于很大。主要完成的功能是最短路徑和所有路徑的算法,最短路徑用的是書上的Dijkstra算法,原來我對這個算法的只是出于一個對大致的過程知道的程度,課程設計之后,我對該算法可以說是很熟悉了,不管是算法思想還是代碼。另一個主要功能是求兩個景點間的所有路徑,這個算法書上沒有提到,我一步步的摸索,用了一個遞歸的思想,再經過不斷的修改,一次次的單步運行,通過查看相應變量的變化情況,將此算法實現的。最后完成整個程序。
課程設計,本人感覺對于寫程序,首先要要的是思想,即完成每個功能需要的算法思想,在想好思想后,就要具體到代碼,計算機能夠識別的代碼,代碼寫好后,大多情況下是有錯誤的,首先要排除語法錯誤,然后時語義錯誤,在排錯的過程中,我用到的最多的是單步運行,感覺單步運行這種方式很管用,通過一步步的運行,通過每一步的運行,觀察其中變量的變化情況,可以很容易的知道代碼是哪一步出了錯誤,這樣對排錯有很大的幫助。在課程設計的過程中,曾遇到過很多的問題,如對路徑字符串的處理,整個遞歸一步步的往下調用和返回過程,還有很多細節的問題。在遇到問題時,首先想到的是自己思考,分析過程,查找資料,上網百度,通過自己的努力還沒有解決時,這是首先需要問的是自己旁邊的同學,和同學討論,有時還爭得面紅耳赤,如果最后將此不下,就向老師提問。這課程設計的過程中,我幾乎所有的問題處理流程就是這個樣子的。我感覺這就是一種學習的方法,在學習中遇到難題時的學習方法,要把這種學習的方法變成一種習慣,這才是每次課程設計應達到的一種效果。
課程設計提供了這樣一種學習的機會,可以隨時隨地向老師請教,和老師交流的一個機會,和同學互相討論的機會。課程設計教會了我,如何用計算機程序來處理現實中的實際問題。將現實中的實際問題先轉化為數學模型,然后將數學模型用程序解決的一種能力。
第二篇:數據結構與算法課程設計 心得體會 學習體會
課程設計的心得體會
剛一開始抽到題目,我一看覺得無從下手,由于那個時候很多課都還在進行著,也就是抽空思考一下思路,也到圖書館中借了相關的書來參考,但沒有進行很深入的研究。課程設計開始的時候,我開始思考我該如何去求解,確定了算法之后,就開始寫程序,修改錯誤,調試,直至完成,在這一過程中,讓我學會了很多東西。
在課程設計結束后,我對書本,也就是我們的教材的認識有了很大的提高。以前我覺得能看懂書上的知識,能寫出算法就認為自己學的還可以。可是通過課程設計,通過我對書上知識的研究,我發現其實書上有很多東西是我沒有領略到的。我的算法的核心思想就是圖的深度優先搜索遍歷,在用鄰接表對圖完成存儲之后,我就開始仔細的看書上有關圖的遍歷的知識,包括深度優先搜索遍歷和廣度優先搜索遍歷,就那么幾頁紙,我看了不知道多少遍。剛一開始看一下,覺得自己會了,然后做程序,遇到問題再拿書看,沒看一次我對算法的理解就更進了一步。通過這次課程設計,讓我明白了書上的知識看似是很有限的,但它蘊含的東西值得我們去花更多的時間去研究。學知識不能只學表面的知識,做出一個深度優先搜索遍歷程序不等于你就掌握了深度優先搜索遍歷算法,其他知識也是這樣,其他科目的學習也同樣是這樣。學習要抓住知識的精髓。
在課程設計這兩個星期中,讓我明白了獨立思考的重要性。一個東西只有經過自己的思考,自己明白了才是真的明白了,別人說的再明白不等于我明白。在思考的過程中,我發現對一個問題,你思考的月深入,可以挖掘的東西就越多。我做的題目是分酒問題:三個酒杯,一個能裝8kg,一個能裝5kg,一個能裝3kg,8kg是空的,5kg和3kg是滿的,不借助其他工具,最終分出兩個4kg。看似無從下手,但經過思考之后我確立了用圖來求解,但是怎樣抽象成圖,抽象成什么樣的圖,模型確立后,圖有很多種存儲結構,采用哪一種存儲結構是最優的等等問題都要去思考。最終我確定采用鄰接表作為存儲結構,圖的深度優先搜索遍歷來求解。
獨立思考很重要,跟別人交流也很重要。在我和別人交流的時候,開闊了我的思維空間,很多原先我沒想到的東西一下子就蹦出來了,而且能填補我知識的空白。跟老師交流就更重要了,以老師的知識層面和對問題的見解,他的想法具有很強的針對性和可行性。做好程序后,在寫實驗報告的時候,我發現在寫實驗報告的過程中,我對我的算法有了更進一步的認識,因為我要寫出來,寫出來的實驗報告不僅我自己能看明白,更關鍵的是別人能看明白。這樣就要求我用簡練的語言來描述我的算法,而且對我的語言組織能力也是一次考驗。
總之,這次課程設計讓我對數據結構有了更深的認識,不僅體現在知識上,還體現在對知識的認識、對學習的認識和對方法的認識。
第三篇:數據結構與算法課程設計 心得體會 學習體會
課程設計的心得體會
陳康蔭080401200708級計科系計本(2)班
完成了這次的二元多項式加減運算問題的課程設計后,我的心得體會很多,細細梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態的生成的,而且鏈表可以靈活地添加或刪除結點,所以使得程序得到簡化。但是出現的語法問題主要在于子函數和變量的定義,降序排序,關鍵字和函數名稱的書寫,以及一些庫函數的規范使用,這些問題均可以根據編譯器的警告提示,對應的將其解決。
2、程序的設計中的邏輯問題及其調整
我在設計程序的過程中遇到許多問題,首先在選擇數據結構的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關鍵字的情況下,在一種關鍵字確定了順序以后,在第一關鍵字相同的時候,按某種順序對第二關鍵字進行排序。在此程序中共涉及到3個量數,即:系數,x的指數和y的指數,而關鍵字排是按x的指數和y的指數來看,由于要求是降冪排序且含有2個關鍵字,所以我先選擇x的指數作為第一關鍵字,先按x的降序來排序,當x的指數相同時,再以y為關鍵字,按照y的指數大小來進行降序排列。
另外,我在加法函數的編寫過程中也遇到了大量的問題,由于要同時比較多個關鍵字,而且設計中涉及了數組和鏈表的綜合運用,導致反復修改了很長的時間才完成了一個加法的設計。但是,現在仍然有一個問題存在:若以0為系數的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當其不是首項的時候,加法函數在顯示的時候有0為系數的項時,0前邊不顯示符號,當然,這樣也可以理解成當系數為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設計減法函數的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細研究算法,后來發現由于前邊的加法函數完全適用于減法,只不過是將二元多項式B的所有項取負再用加法函數即可,可見算法的重要性不低于程序本身。
3、程序的調試中的經驗及體會
我在調試過程中,發生了許多小細節上的問題,它們提醒了自己在以后編程的時候要注意細節,即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結的教訓就是寫程序的時候,一定要仔細、認真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導致有的時候在檢查和調試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現。如果注意格式風格,并且養成隨手加注釋的習慣,就能減少這些不必要的反復和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調試結果要在原有的基礎上更加精確。
第四篇:數據結構與算法課程設計 心得體會 學習體會(42)
心得體會
通過本次課程設計,對圖的概念有了一個新的認識,在學習離散數學的時候,總覺得圖是很抽象的東西,但是在學習了《數據結構與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數字化的信息,比如說權值、頂點個數等,這也就說明了想要把生活中的信息轉化到計算機中必須用數字來完整的構成一個信息庫,而圖的存在,又涉及到了頂點之間的聯系。圖分為有向圖和無向圖,而無向圖又是有向圖在權值雙向相等下的一種特例,如何能在計算機中表示一個雙向權值不同的圖,這就是一件很巧妙的事情,經過了思考和老師同學的幫助,我用edges[i][j]=up和edges[j][i]=up就能實現了一個雙向圖信息的存儲。
對整個程序而言,Dijkstra算法始終都是核心內容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的方法,及從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現這么一個很簡單的想法就需要涉及到很多專業知識,為了完成設計,在前期工作中,基本都是以學習C語言為主,所以浪費了很多時間,比如說在程序中,刪除頂點和增加頂點的模塊中都有和建圖模塊相互重復的函數,但是由于技術的原因,只能做一些很累贅的函數,可見在調用知識點,我沒有掌握好。不過,有了這次課程設計的經驗和教訓,我能夠很清楚的對自己定一個合適的水平,而且在這次課程設計中我學會了運用兩個新的函數sprintf()和包涵在#include
第五篇:數據結構與算法課程設計 心得體會 學習體會 (32)
課程設計心得體會
學號:0804012044
姓名:張睿辰
班級:08計本二班
課程設計做完了,我的大學第二個春秋也落下了帷幕,通過兩個星期的課程設計明白了很多,體驗了很多,也懂得了很多。
我的課程設計題目是:對任意圖,選擇合適的數據結構表示圖,在此基礎上實現求解最短路徑的Dijkstra算法。
剛開始拿到這個題目還是比較慶幸的,因為Dijkstra算法在課堂上曾詳細的講解過,所以還是比較有信心的。在做查找最短路徑的算法時很流暢,但是在輸出最短路徑的時候遇到了很大的阻力。因為在定義結點時,使用的是結構體數組,所以當處理V0到每個結點的最短路徑時,導致無法具體記錄經過的頂點數,只能記錄源點、終點前一頂點以及終點。所以本程序在輸出最短路徑時有較大的瑕疵,還需進一步修改。
通過本次課程設計,對圖的概念有了一個新的認識,在學習離散數學的時候,覺得圖是很抽象的東西,在學習了《數據結構與算法》這門課程之后,對圖有了更好的理解,圖之所以能夠在計算機中存在,是因為我們把圖進行了具體化,比如說權值、頂點個數等,反映了圖中點、邊的關系。圖的存儲結構有鄰接矩陣、鄰接表、十字鏈表和鄰接多重表,在本次課程設計中都有涉獵。最后選用鄰接矩陣是因為,操作簡單,容易判斷圖中兩個頂點是否相連。
對整個程序而言,Dijkstra算法始終都是核心內容,其實這個算法在實際思考中并不難,也許我們誰都知道找一個路徑最短的地方,都是從頂點一步一步找最近的路線并與其直接距離相比較,但是,在計算機中實現這么一個很簡單的想法就需要涉及到很多專業知識和內容,為了完成設計,查閱了一些資料書籍。
對于我設計的程序而言,我覺得還是比較粗糙,只是單純的按要求實現了Dijkstra算法求最短路徑,而缺乏一些輔助的功能,比如圖的遍歷,刪除,查找等,顯得該程序局限性很大,所以還應該嘗試去完善這個題目。
這次課程設計我收獲了很多,不僅鞏固和加深了對數據結構的理解,提高綜合運用本課程所學知識的能力,也培養了我選用參考書,查閱手冊及文獻資料的能力,及培養了獨立思考,深入研究,分析問題、解決問題的能力。通過自己分析設計、編程調試,掌握問題的分析方法,也想到將來從事軟件編寫行業時,應該持有的工作態度。
根據我在課程設計中遇到得問題,我將在以后的學習過程中注意以下幾點:
1、認真上好專業實驗課,多在實踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴密。
3、在做設計的時候要有信心,有耐心,切勿浮躁。
4、認真學習課本知識,掌握課本中的知識點,并在此基礎上學會靈活運用。
5、在課余時間里多寫程序,熟練掌握在調試程序的過程中所遇到的常見錯誤,以便能節省調試程序的時間。