20172319 《程序設計與數據結構》 第四周學習總結

20172319 2018.09.29-10.08

《程序設計與數據結構》第4周學習總結

目錄


教材學習內容總結

第六章 列表:

  • 6.1 列表集合:
  • 列表 是是使事物以線性列表的方式進行組織,列表集合 沒有內在的容量大小,其能夠隨着須要而增大。
  • 列表集合有三種類型:
  • 有序列表(ordered list) : 元素按其某種內在特性排序。
  • 無序列表(unordered list) :其元素間不具備內在順序,元素按其在列表中的位置進行排序。
    html

  • 索引列表(indexed list) : 其元素能夠用數字索引來引用。前端

  • 6.2 java集合API中的列表:
  • java集合API提供的列表類主要是支持索引列表,在必定程度上,這些類與無序列表是重疊的,在javaAPI中並無任何類能直接實現有序列表。java

  • java.util.List接口中的一些方法git

  • 方法 描述
    add(E element) 向列表末端添加一個元素
    add(int index, E element) 在指定索引處插入一個元素
    get(int index) 返回指定索引處的元素
    remove(int index) 刪除指定索引處的元素
    remove(E Object) 刪除指定對象的第一個出現
    set(int index , E element) 替代指定索引處的元素
    size() 返回列表中的元素數量
  • 6.5 列表ADT:
  • 列表的常見操做:
  • 操做 描述
    removeFirst 從列表中刪除第一個元素
    removeLast 從列表中刪除最後一個元素
    remove 從列表中刪除某個元素
    first 查看位於列表前端的元素
    last 查看位於列表末端的元素
    contains 肯定列表是否含有某一個元素
    size 肯定列表中的元素數量
  • 特殊操做:
  • 1.有序列表:
  • 操做 描述
    add 往列表中添加一個元素
  • 2.無序列表:
  • 操做 描述
    addToFront 把元素添加到列表的前端
    addToRear 把元素添加到列表的末端
    addToAfter 把元素添加到列表中某個已有元素的後面

    實例:

  • 6.6 用數組實現列表
  • 將列表的某一端固定在數組的索引0處,按需平移元素。
  • remove操做的複雜度: O(n),查找元素並將其刪除,若刪除元素位於列表首位,則只需進行一次比較操做,若位於末尾,則需進行n次比較操做;而刪除後,數組的高索引爲會向下平移以填補空隙,而進行了n次比較和平移後恰能完美實現。
  • contains操做複雜度: O(n),查找目標元素並返回Boolean型值,該方法執行的是鏈表的線性查找,查不到的狀況下至多需進行n個比較操做,所以該方法平均須要進行n/2次比較操做。
  • add操做(有序列表)複雜度: O(n),進行比較找到元素在列表中的正確位置,而後平移元素以便爲新元素讓位,若在前端,則進行一次比較,而後平移列表中的其餘n-1個元素;若在末端,則須要進行n次比較。
  • addToFront操做複雜度 : O(n),需平移n-1個元素。
  • addToRear操做複雜度: O(1)。
  • addToAfter操做複雜度: O(n),需進行n次比較和平移操做。
  • 用固定數組實現棧的效率並不高;
  • 環形數組(circular array),數組的最後一個索引後面跟的是第一個索引;能夠去除在列表的數組實現中元素移位的須要數組

  • 6.7 使用鏈表實現列表
  • remove操做的複雜度:O(n);數據結構

返回目錄學習


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

  • 問題1:鏈表編成棧,編成隊列;數組編成棧,編成隊列,你換來、我換去的有什麼用?
  • 解決:
  • 數組、鏈表、棧和隊列是最基本的數據結構,任何程序語言都會涉及到其中的一種或多種;.net

    數組:

    鏈表:

返回目錄設計


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

  • 問題1:隊列前端位置元素丟失。
  • 20172301並不在隊列裏;
  • 解決:
  • 經過對代碼順序的更換,咱們發現tostring和first兩個方法的內容發生了衝突;

  • 最後經過對方法的代碼調試,發如今隊頭的元素已被修改,因此致使並不是預期元素:
  • 經過將其修改,最終實現了預想的效果:

返回目錄3d


代碼託管

返回目錄


上週考試錯題總結

  • 錯題1:

  • 解決: 多態引用使用的是對象的類型來決定調用版本的方法。

  • 錯題2:

  • 解決:top變量指的是數組中的下一個可用位置和數組中項目的數量。

  • 錯題3:

  • 解決:pop操做是經過返回對當前存儲在頂部的元素的引用來實現的。

返回目錄


結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172316趙乾宸
    • 博客中值得學習的或存在問題:
    • 20172329王文彬
    • 博客中值得學習的或存在問題:
    • 博客內容充實、排版整齊、對教材內容有通過一番認真思考、繼續保持。

返回目錄


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

返回目錄


學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 3000行 15篇 300小時
第一週 0/0 1/1 12/12
第二週 935/935 1/2 24/36
第三週 849/1784 1/3 34/70
第三週 3600/5384 1/5 50/120

返回目錄


參考資料

數據結構(Java實現)之單向鏈表的節點表示、插入、刪除、單向鏈表反轉和串聯
【數據結構】鏈表的原理及java實現
java集合包總結(添加、刪除等操做實現原理)

返回目錄

相關文章
相關標籤/搜索