20172313 2018-2019-1 《程序設計與數據結構》第二週學習總結

20172313 2018-2019-1 《程序設計與數據結構》第二週學習總結

教材學習內容總結

  • 集合
    • 集合是一種彙集、組織了其餘對象的對象。
    • 集合中的元素一般是按照它們添加到集合的順序,或者是按元素之間的某種內在關係來組織的。(線性集合和非線性集合)
    • 集合是一種隱藏了實現細節的抽象。(集合也是一種抽象,集合定義了一些接口操做,用戶經過這些操做能夠管理集合中的對象。
    • 數據類型是一組值及做用與這些數值上的各類操做。
    • 抽象數據類型是一種用於實現集合的編程結構集。
    • 數據結構是一種用於實現集合的基本編程結構。
  • 棧集合
    • 棧的元素是按按後進先出(LIFO)的方法進行處理的,最後進入棧中的元素最早被移出。
    • 編程人員選擇的數據結構,應與須要進行數據管理的類型相適應。
    • 在棧的設計中,能夠看到棧的做用與使用棧的應用程序之間的分離。注意:若是pop或peek操做能夠做用於空棧,那麼棧的任何實現都要能拋出一個異常。集合的做用不是去肯定如何處理這樣一個異常,而只是把它報告給使用該棧的應用程序。一樣,在棧中不存在滿棧的概念。所以,應該由棧來管理他本身的儲存空間,消除發生滿棧的可能。
  • 主要的面向對象概念
    • 多態應用是一個引用變量,它能夠在不一樣地點應用不一樣類型的對象。繼承可用於建立一個類層次,其中,一個引用變量可用於指向與之相關的任意對象。
    • 泛型:能夠定義一個類,以便它能存儲、操做和管理在實例化以前沒有指定是何種類型的對象。
class Box<T>{
    //用於管理類型T的對象的聲明或代碼
}

Box<Widget> box1 = new Box<Widget>
Box<Gadget> box2 = new Box<Widget>
  • 異常
    • 異常就是一個對象,它定義了一種非正常或錯誤的狀況。異常由程序或運行時環境拋出,能夠按預期的被捕獲或被正確處理。錯誤與異常相似,只不過錯誤每每表示一種沒法恢復的狀況,且沒必要去捕獲它。
    • 錯誤和異常表示不正常或不合法的處理。
  • 棧ADT
    • Java接口定義了一個抽象方法集,有助於把抽象數據類型的概念與其實現分隔開來。
    • 經過使用接口名做爲返回類型,方法就不會侷限於實現棧的任何特定類。
public interface  StackADT<T> {
    public void push (T element);
    public T pop();
    public T peek();
    public boolean isEmpty();
    public int size();
    public String toString();
}
  • 連接做爲引用
    • 對象引用變量能夠用來建立鏈式結構。
    • 鏈表有一些對象構成,其中每一個對象指向了鏈表中的下一對象。
    • 鏈表會按需動態增加,所以在本質上,它沒有容量限制。
  • 管理鏈表
    • 從列表中插入和刪除元素時有兩種狀況:一種是處理第一個結點的狀況,另外一種時處理其它結點的狀況。經過在列表的前端引入哨兵節點啞節點,就能夠去除這種涉及第一個結點的狀況。哨兵結點能夠做爲一個假的第一個結點,並無真正表示列表中的某個元素。當使用了哨兵結點時,全部的插入和刪除操做就都屬於第二種狀況了。

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

  • 問題1:繼承和接口的區別,上學期學習的時候查過這個問題,答案有些淡忘了,如今再碼一遍以便於之後的複習。
  • 問題1解決方案:1、語法層次:抽象類:1.由abstract關鍵詞修飾的類稱之爲抽象類。
    2.抽象類中沒有實現的方法稱之爲抽象方法,也須要加關鍵字abstract。
    3.抽象類中也能夠沒有抽象方法,好比HttpServlet方法。
    4.抽象類中能夠有已經實現的方法,能夠定義成員變量。
    接口:1.由interface關鍵詞修飾的稱之爲接口;
    2.接口中能夠定義成員變量,可是這些成員變量默認都是public static final的常量。
    3.接口中沒有已經實現的方法,所有是抽象方法。
    4.一個類實現某一接口,必須實現接口中定義的全部方法。
    5.一個類能夠實現多個接口。2、設計層次:詳見博客最後連接。
  • 問題2:泛型的做用是什麼?
  • 問題2解決方案:從Java5.0開始,容許用戶基於泛型來定義一個類。也就是說,咱們能夠定義一個類,它存儲,操做和管理的對象的數據類型直到改類實例化時才被指定。這使得結構的建立不只能夠操做「泛型」元素,並且還能夠提供類型檢查。
  • 問題3:使用數組和鏈表均可以實現棧,那麼二者的優缺點是什麼?
  • 問題3解決方案:只要在須要時,鏈表實現纔會分配儲存空間,而且只有硬件空間大小的理論限制。數組實現爲每一個對象使用的空間更少,由於他只須要儲存對象,不須要儲存額外的指針。可是,在初始的時候,數組會分配比它所需的更多空間。

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

  • 問題1:在使用數組進行堆棧的時候,進行測試時老是得不到正確的結果。會把我push的數字屢次輸出,沒法獲得正確的結果。
    html

  • 問題1解決方案:在debug了以後,發現是我「result」的變量是在方法外定義的,而不是方法內,這就致使「result」的值沒法初始化爲零,輸出的時候看起來就會像是屢次輸出。

    前端

  • 問題2:在進行編程項目4_2的時候,輸出時沒法獲得正確的數字。
    git

  • 問題2解決方案:在進行toString的時候,沒有額外定義一個變量使它等於count,而是直接使用count進行自減,致使count的量出現變化,沒法正確的進行輸出。編程

代碼託管


  • 因爲AS沒法git,現將代碼和效果圖貼上。



上週考試錯題總結

  • 錯題1:The analysis of nested loops must take into account both the inner and outer loops.
    A . True
    B . Flase
  • 解析:分析嵌套循環的複雜度是,必須將內層循環和外層循環都考慮進來。
  • 錯因:這題徹底是不該該錯的,徹底是因爲本身粗枝大葉,對英語沒有理解清楚就選了答案。

結對及互評

  • 博客中值得學習的或問題:
    • 排版精美,對於問題研究得很細緻,解答也很周全。
  • 代碼中值得學習的或問題:
    • 代碼寫的很規範,思路很清晰,繼續加油!

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172332
    • 20172326
    • 結對學習內容
      • 第3章 集合概述——棧
      • 第4章 鏈式結構——棧

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

  這是開學的第二個星期了,狀態相比第一個星期有所回升,但仍是不盡人意,在學習的時候注意力仍然不夠集中,容易分散。在暑假裏丟掉的東西感受尚未徹底撿起來,在這周寫代碼的時候,也常常會犯一些低級的錯誤,常常會出現變量定義位置錯誤的狀況,在這上面也浪費了不少時間。但願能在接下來的學習時間中狀態能穩步提升,自身能不斷進步!數組

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
第一週 200/200 1/1 5/20
第二週 981/1181 1/2 15/20
  • 計劃學習時間:15小時數據結構

  • 實際學習時間:15小時oop

參考資料

相關文章
相關標籤/搜索