標籤:運行時 水平 第二周 結束 導致 方式 總結 對象 目標
20172311《程式設計與資料結構》第四周學習總結教材學習內容總結第六章 列表
- 列表可以使用鏈表或數組來實現
- 隊和棧的元素只能在末端添加和刪除,而列表集合更一般化,可以在列表的中間和末端添加和刪除元素
- 列表可以分為有序列表、無序列表和索引列表
- 有序列表往列表添加新元素,就要尋找新元素相對於所有已有元素的正確排序
- 無序列表中的元素按使用者所選擇的任意方式排序
- 索引列表為它的元素維護一段連續的數字索引值
- 索引列表和數組的根本區別在於:索引列表的索引值總是連續的
- 為了使某個對象能使用序列化進行儲存,其類必須實現Serializable,在Serializable介面中並沒有任何方法,它只是表明該對象可以轉換為序列化表示形式
- 索引列表特有的操作,可以利用其索引來很好地使用引用元素
- 只有Comparable對象才能儲存在有序列表中
教材學習中的問題和解決過程
- 問題1:隊列的數組實現中,環形數組是如何?以及發揮作用的
- 問題1解決方案:
通常,一個元素入列後,rear的值要遞增。但當enqueue操作填充了數組的最後一個單元時,rear的值必須設定為0,表明下一個元素應該儲存在索引0處。下面的程式碼將正確地更新rear的值:
rear = (rear+1)% queue.length;
- 問題2:使用環形數組實現隊列中擴大數組容量的具體是如何?的
- 問題2解決方案:
1.使用如下代碼執行個體化一個容量為原數組兩倍的數組
T[] larger=(T[]) (new Object[queue.length*2]);
2.使用如下代碼將原數組裡的元素複製到新數組裡
for (int scan = 0; scan < count; scan++) { larger[scan] = queue[front]; front = (front + 1) % queue.length; }
3.使用如下代碼重新確立front指標和rear指標並將新數組再賦給原數組
front = 0; rear = count; queue = larger;
代碼調試中的問題和解決過程
問題1:pp5.1LinkedQueue類的測試類別在運行時列印佇列的方法有問題,導致列印內容呈現出亂碼的形式,如:
問題1解決方案:
經過仔細檢查發現是toString()方法存在問題,再通過調試發現是紅圈標註部分出現的問題,恰當改正之後問題得以解決,改正後代碼及運行如下:
代碼託管
上周考試錯題總結
待定
補充作業
你認為對你特別重要的技能,記下你目前的水平,和你想在課程結束後達到的水平
| 我認為對我特別重要的技能 |
我目前的水平 |
我想在課程結束後達到的水平 |
| Comprehension(理解程式) |
能夠理解一些初級代碼並能夠簡單運用debug |
能夠較好地理解複雜代碼並熟練運用debug |
| Design(架構設計、模組化設計、介面設計) |
能夠進行簡單程式的設計 |
能夠對較複雜的程式進行較好的設計 |
| Performance(效能分析和改進) |
基本不考慮這方面,只考慮能否正常運行 |
能夠盡量提高程式的效能 |
| Test(單元測試、程式碼涵蓋範圍) |
單元測試基本掌握,代碼的覆蓋率基本不考慮 |
提高降低程式碼涵蓋範圍的能力 |
| BigData (大資料) |
基本不會處理大資料 |
能夠較輕鬆的處理大資料 |
結對及互評
- 本周結對學習情況
對課本上的諸多疑問點進行了討論,同時對代碼實現過程中遇到的一些問題也通過討論得以解決
感想
繼續努力!
學習進度條
|
程式碼數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
| 目標 |
5000行 |
30篇 |
400小時 |
|
| 第一周 |
0/0 |
1/1 |
4/4 |
|
| 第二周 |
464/464 |
1/2 |
10/14 |
理解掌握了用數組和鏈表實現棧的方法 |
| 第三周 |
494/494 |
1/3 |
10/24 |
理解掌握了用數組和鏈表實現隊列的方法 |
計劃學習時間:15小時
實際學習時間:10小時
改進情況:注重動手能力!
參考資料
20172311《程式設計與資料結構》第四周學習總結