這數日來編程的心得體會:
說真的,“將鄰接矩陣轉換成鄰接鏈表,并輸出,然后又將鄰接鏈表進行拓撲排序”這個題目真的很惱人,我做了大概四天,才把鄰接矩陣轉換成鄰接鏈表這個功能完成,但是后面那個拓撲排序卻是怎么也做不出來。
這四天中我花了兩天來完成這第一個功能,第一個轉換動能需要四步,建立矩陣,輸出矩陣(這一步可以不要),進行轉換,輸出鏈表,第一天,我先是將建立鄰接矩陣,輸出鄰接矩陣,以及輸出鄰接鏈表這三件事率先完成,要完善矩陣轉換后的鏈表輸出這個功能,就差最重要的第三部轉換了,我先是定義了一個新結點,畢竟要使用鏈表就必須使用結點操作資料,可是當我把頂點的資料以及邊的權值進行轉換后,編譯時沒什么錯誤,可是運行時,無論如何都有錯,轉換后的鏈表就是輸不出來,這真是有點氣人,后來,我慢慢琢磨,一步一步驗證,試驗,希望找出程式中的錯誤,花了大概三個小時的時間,我才找到了錯誤,奶奶的,原來是我沒有進行新結點空間的申請,我只是用自己創建的結構體Edge定義了結點*p,卻沒有為p申請空間,這真是不該犯的低級錯誤,當我把錯誤糾正后,矩陣轉換鏈表這個功能就完成了,當時心中真的是不好受,我居然會把資料結構鏈表操作中如此重要的步驟忘記了。
對于這次錯誤,后來我總結了一點,那就是如果不使用堆疊以及佇列的操作,那么在定義了結點后,一定要申請新的空間。
后來的兩天,除了上課,看書外,其余的時間就是搞c++了,自然,第二個功能拓撲排序自然是要做的,可是無論我如何,我都無法把拓撲排序這個功能完成,查了許多資料,拓撲排序的核心思想是要用堆疊的思想,先是把入度為0的頂點放入堆疊中,然后再輸出來,后面的那些頂點的入度相繼減1,誰先為0,誰便先入堆疊,然后再輸出(這兒就得需要使用回圈了),不過我確實是使用這樣的思想去做的,但是就是要出錯,編譯時沒有報錯,運行時就是要出錯,無法輸出想要的結果,第三天就在郁悶中度過,至于第四天,我便慢慢地找錯誤,又是試驗了許多次,終于找出了錯誤,草,居然是出堆疊時出了錯,我無法想通,為什么進堆疊時沒錯,出堆疊時卻錯了,錯誤根源在于出堆疊時無法將資料進行輸出,后來花了許多時間,搞了許多方法終于搞對了一半,有點悲,花了許多時間,查了許多資料,才搞對一半,那一半也只是把最先入度為0的元素輸出來,至于后面那些入度不為0的就嗚呼哀哉,我不濟了,<—_—>。
唉,真是可嘆可憐的人兒,花了那么久的時間居然只搞出了一個半的功能,可是為了軟體工程,為了將來能有好的發展,為了能功成名就,老子也只好豁出去了。
今天我也只有去問老師拓撲排序怎么做了,看看她有沒有什么高招。
總結:不會時,要查找資料,不懂時,要上網找答案,同時,一定要記住,日后要是再遇見結點之類的問題,一定不要再犯同樣低級的錯誤了,低級錯誤可是編程中的大忌。
對自己的要求:抓好基礎知識,提高編程效率,花更少的時間,完成更好的功能,畢竟這是高速發展的時代,前日大家還在用window,昨日大家還在玩蘋果,今天大家已經開始傾向于andro了,不知明日蘋果,andro是否會成為過去時呀?!
uj5u.com熱心網友回復:
這是廣告?
uj5u.com熱心網友回復:
熟練掌味訓礎的資料結構和相關演算法,無論在哪個開發環境下都是有用的uj5u.com熱心網友回復:
為了學習,自己做鏈表無可非議。要是做工程,大可不必。CB 有現成鏈表,即可做佇列,也能做堆疊。uj5u.com熱心網友回復:
CB 有現成鏈表,即可做佇列,也能做堆疊。 詳細點否?uj5u.com熱心網友回復:
可以用stl的 list
uj5u.com熱心網友回復:
演算法懂點挺好的。但沒必要過分深究。現在很多都有現成的。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151541.html
標籤:基礎類
上一篇:teamviewer安裝
