問題:爲何用數組實現列表時沒有用環形數組,與用數組實現隊列時有何區別?html
問題解決方案:經過研讀課本得知。首先對於非環形數組數組實現隊列假定隊列的首元素老是存儲在數組的索引0處,因爲隊列處理會影響該集合的兩端,所以在刪除元素時,該策略要求移動元素,使得dequeue操做的複雜度爲O(n),數組實現的操做選使得效率低,而把數組看作環形的,能夠去除在隊列的數組實現中把元素位移的須要。而對於使用數組實現列表,通常的列表也能夠從兩端添加和刪除元素,可是它們還有從列表中間插入或刪除元素,所以沒法避免要移動元素,也可使用環形數組方法,可是當從列表中間插入或者刪除元素,仍然須要移動元素,於是使用環形數組就顯得沒有必要了git
問題1:用數組實現的有序列表類在測試時出現以下錯誤:
報錯代碼以下:
數組
問題1解決方案:剛開始我覺得是個人數組實現的有序列表裏的add方法有問題,通過單步調試發現是由於我既加入了int型對象,又加入了String型對象,而該add方法可以進行排序的前提是全部的添加對象都是可比較的同一類型的對象,改正事後的測試類及運行結果截圖以下:
數據結構
問題2:pp6.17運行測試類時發現contain方法含有空指針異常,運行結果以下:
錯誤contain方法以下:
學習
問題2解決方案:通過單步調試發現是邏輯上的錯誤形成的,在判斷是否含有時應該首先判斷是否爲空,初步修改後仍有空指針錯誤,報錯代碼以下:
再經單步調試發現一樣是邏輯錯誤,在獲得元素前首先應該判斷是否爲空,最終修改後正確的contain方法以下:
測試
錯題1:
.net
理解:定義良好的接口掩蓋了集合的實現設計
錯題2:
3d
理解:繼承的變量和方法能夠在派生類中使用,就好像它們是在本地聲明的同樣。指針
錯題3:
理解:公共功能應該在合理的類層次結構中儘量高而不是儘量低,以最小化維護工做
錯題4:
理解:實現基於數組的堆棧的最有效方法是將堆棧的底部而不是保持在數組的0位置
錯題5:
理解:對象引用變量可用於建立鏈式結構
錯題6:
理解:堆棧的連接實現從鏈表的front進行
遇到細節問題時不要毛躁,要冷靜分析,慢慢尋找錯誤,有助於問題的解決!!!!
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 4/4 | |
第二週 | 464/464 | 1/2 | 10/14 | 理解掌握了用數組和鏈表實現棧的方法 |
第三週 | 494/958 | 1/3 | 10/24 | 理解掌握了用數組和鏈表實現隊列的方法 |
第四周 | 1629/2587 | 2/5 | 20/44 | 對用鏈表和數組實現列表進行了學習 |
計劃學習時間:15小時
實際學習時間:20小時
改進狀況:繼續強化代碼編寫能力!!