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 李馨雨同學這次的博客中規中矩,沒有特別出彩的地方,但是結構完整。

點評過的同學博客和代碼

其他(感悟、思考等,可選)

  本週主要學習了列表,在我的認知中,列表就是包括鏈表和數組。經過了這麼長時間的打磨歷練,好像數組與鏈表的知識都已經掌握了,聽老師說後面的束河圖就要利用鏈表和數組方面的知識,不知道還要經過多少次考驗。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 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串行化問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章