20172304 《程序设计与数据结构》第四周学习总结
20172304 《程序設計與數據結構》第四周學習總結
教材學習內容總結
第六章主要介紹了列表,這個列表是一種概念上的籠統的定義。
列表包括鏈表和數組。
列表分為:有序列表,無序列表,索引列表。
| 無序列表 | 其元素件不具有內在順序,元素按照他們在列表中的位置進行排序 |
| 索引列表 | 其元素可以用數字索引來引用 |
有序列表和無序列表在插入式有區別,有序列表需要做到插入之后還是有序的。而無序列表不是這樣的。而索引列表雖然可以通過索引進行插入,刪除操作,但是還是要保持連續。要做到索引之間是連續的。
java集合API中的列表
| add(E element) | 往列表的末端添加一個元素 |
| add(int index,E element) | 在指定索引出插入一個元素 |
| get(int index) | 返回指定索引處的元素 |
| remove(int index) | 刪除指定索引處的元素 |
| remove(E object) | 刪除指定對象的第一個出現 |
| set(int index,E element) | 替代指定索引處的元素 |
| size() | 返回列表中的元素數量 |
使用無序列表:學習計劃
其中的Course類定義了一些課程的信息例如系名,成績等等。然后其中的ProgramOfStudy則是對Course類進行管理,做一些鏈表的基本操作。除此之外還添加了替換,查找等一些維護課程的必要操作。
索引列表應用實例:Josephus問題
這個就是隔幾取一的問題。通過鏈表實現
列表ADT、
公共操作
| removeFirst | 從列表中刪除第一個元素 |
| removeLast | 從列表中刪除最后一個元素 |
| remove | 從列表中刪除某個元素 |
| first | 查看位于列表前端的元素 |
| last | 查看位于列表末端的元素 |
| contains | 確定列表是否含有某個元素 |
| isEmpty | 確定列表是否為空 |
| size | 確定列表中的元素數量 |
有序列表
| add | 往列表中添加一個元素 |
無序列表
| addToFront | 把元素添加到列表的前端 |
| addToRear | 把元素添加到列表的末端 |
| addAfter | 把元素添加到列表中某個一直元素的后面 |
使用數組實現列表
使用鏈表實現列表
教材學習中的問題和解決過程
- 問題1:串行化的問題
- 問題1解決方案:書上提了一嘴有關串行化的概念,但是并沒有深入的講解,后來通過查閱資料得知,串行化可以將數據轉換為字節流,也就是計算機最基本的數據結構——二進制,這使得串行化后的數據可以儲存在任何儲存空間。但是串行化只能應用在非靜態方法和變量。而且必須實現Serializable接口。
代碼調試中的問題和解決過程
由于這次進行的內容之前已經進行過很多次了(即鏈表和數組的),所以遇見的問題很少。問題1:在進行測試時發現無法引用變量。還有toString方法沒有辦法正常調用
問題1解決方案:后來發現是沒有加運行函數。還有在toString的函數里沒有將那個環形數組中開頭的索引值隨循環做自減運算。
代碼托管
代碼截圖
錯題總結
第三周&第四周錯題
錯題一:
錯題一解答:
棧的pop操作返回的顯然是一個元素而不是一個節點,這是當時馬虎。
錯題二:
錯題二解答:后來在編碼過程中實踐了是正確的。
錯題三:
錯題三解答:后面已經說了不是引用的類型,但是我還是錯選了C,應該選A對象的類型。
錯題四:
錯題四解答:集合中儲存的對象只包含對象本身,并不會有其具體實現的細節。
錯題五:
錯題五解析:這是很明顯得是,在單向列表中,其中常的打印方式必然是從頭部開始的,對應實現的棧的出入棧操作也是在鏈表的頭部,也就是前部實現的。
第五周
錯題一:
錯題一解析:這道題我記得一開始我也想選A來著,知識不知道后來莫名其妙的選擇了B。
博客互評
- 博客中值得學習的或問題:
20172301 郭愷同學本次博客十分簡潔,對教材的內容概括的十分精煉,總體篇幅較短。
20172328 李馨雨同學這次的博客中規中矩,沒有特別出彩的地方,但是結構完整。
點評過的同學博客和代碼
- 上周博客互評情況
- 20172301
- 20172328
其他(感悟、思考等,可選)
本周主要學習了列表,在我的認知中,列表就是包括鏈表和數組。經過了這么長時間的打磨歷練,好像數組與鏈表的知識都已經掌握了,聽老師說后面的束河圖就要利用鏈表和數組方面的知識,不知道還要經過多少次考驗。學習進度條
| 目標 | 5000行 | 30篇 | 400小時 | |
| 第一周 | 30/30 | 1/1 | 10/10 | |
| 第二周 | 766/796 | 1/2 | 40/50 | |
| 第三周 | 817/1613 | 1/3 | 20/70 | |
| 第四周 | 1370/3983 | 2/5 | 30/100 |
參考資料
1.藍墨云班課
2.java軟件結構與數據結構
3.Java串行化問題
轉載于:https://www.cnblogs.com/15248252144dzx/p/9751888.html
總結
以上是生活随笔為你收集整理的20172304 《程序设计与数据结构》第四周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 爬虫利器 Beautifu
- 下一篇: Java获得时间 String与Time