20172316 2018-2019-1《程序設計與數據結構》第四周學習總結

20172316 2017-2018-2《程序設計與數據結構》第四周學習總結

教材學習內容總結

第六章 列表

列表和以前的棧、隊列有類似之處,都是一種集合,不一樣之處在於:列表能夠在中間添加和刪除元素。html

其方法主要有git

方法 描述
add(E element) 列表末端添加
add(int index,E element) 索引處添加
get(int index) 返回索引處元素
remove(E o) 刪除列表中第一個o
remove(int index) 刪除索引處元素
set(int index,E element) 替代索引處元素
size() 返回元素數量

這些方法實現起來和以前的線性結構並沒有二致,以前也在隊列中使用過中間插入的方法,處理起來不難。數組

無序和有序:這是本章和以前最不同的地方,列表分爲三種類型:有序、無序、索引。有序列表add()時會根據所添加元素的關鍵值自動排序;無序列表則能夠根據須要添加至所制定的位置(前addToFront()、後addToRear()、中addAfter())。網絡

利用數組、鏈表來實現有序和無序列表:理解了上面的概念後,無需列表實現方法和棧、隊列的實現基本相同。值得注意的是有序列表須要Comparable接口來幫助實現,參考了上學期第八週的做業和知識進行復習。數據結構


教材學習中的問題和解決過程

  • 有序無序,當時光從字面上理解,誤覺得有序指具備線性的結構而無序反之,結果並非這樣。有序和無序指的是列表元素的內在關聯,看書後獲得正確理解(上面↑)學習

  • 什麼是Serializable接口?(串行化?序列化?)ui

引用:設計

什麼是Serializable接口?
一個對象序列化的接口,一個類只有實現了Serializable接口,它的對象才能被序列化
什麼是序列化?
將對象的狀態信息轉換爲能夠存儲或傳輸的形式的過程,在序列化期間,對象將其當前狀態寫入到臨時存儲區或持久性存儲區,以後,即可以經過從存儲區中讀取或反序列化對象的狀態信息,來從新建立該對象
什麼狀況下須要序列化?
當咱們須要把對象的狀態信息經過網絡進行傳輸,或者須要將對象的狀態信息持久化,以便未來使用時都須要把對象進行序列化3d


代碼調試中的問題和解決過程

基本沒有問題,都是能夠立馬解決的小細節(索引差一位、鏈表一個指針丟失的小問題)。指針


代碼託管

(statistics.sh腳本的運行結果截圖)


上週考試錯題總結

  • 1.Because queue operations modify both ends of the collection, fixing one end at index 0 eliminates the requirement that elements be shifted.
  • 正確答案:False
  • 緣由:書中說:因爲隊列操做會修改集合的兩端,所以將一端固定在索引0處。並未說消除了元素位移的需求。
  • 2.Treating arrays as circular eliminates the need to shift elements in an array queue implementation.
  • 正確答案:True
  • 緣由:環形數組消除了元素位移的需求,是對的,估計我是選錯了。
  • 3.A polymorphic reference can refer to different types of objects over time.
  • 正確答案:True
  • 緣由:這不就是多態的特色嗎?
  • 4.A linked implementation of a stack adds and removes elements from the _______ of the linked list.
  • 正確答案:A.Front
  • 緣由:未認真看題,覺得應選top

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 6/6
第二週 771/771 1/2 16/22
第三週 562/1233 1/3 15/37
第四周 1503/2736 2/5 15/52

結對互評

唐才銘19
王文彬29

參考資料

相關文章
相關標籤/搜索