1. 程式人生 > >20172315 2017-2018-2 《程序設計與數據結構》第十周學習總結

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

ren 創建 腳本 時間 location 調試 csdn 保存 alt

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

教材學習內容總結

  • 集合是一種對象,類似於保存其他對象的存儲庫。
  • 集合的同構和異構:同構意味著這種集合保存類型全部相同的對象,異構可以保存各種類型的對象。
  • 對象具有定義良好的接口,從而成為一種實現集合的完整機制。
  • 數據結構的動態表示:一個動態數據結構用鏈來實現,利用對象引用作為連接對象之間的鏈,就可以建立起適用於各種情況的數據結構。按這種方式建立的數據結構具有動態性,因為其大小是在使用時動態確定的,而不是在聲明時靜態確定的。
  • 其他的動態列表有用雙向鏈表實現方案或添加頭節點來實現
  • 線性數據結構是順序表在計算機內存中以數組的形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。例如:列表、隊列、堆棧等。
  • 非線性數據結構:有些數據結構以非線性方式組織數據,因而稱為非線性數據結構。例如:樹和圖等。
  • Java集合類API中定義的類定義為泛型,是指一個集合所管理的對象的類型要在實例化時該集合對象時才能確定。泛型保證了集合中對象類型的兼容性。

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

  • 問題1:不太了解書上的非線性數據結構
  • 問題1解決方案:在網上查找了資料知道了二叉樹:二叉樹是一種非線性數據結構,屬於樹結構,最大的特點就是度為2,也就是每個節點只有一個左子樹和一個右子樹。二叉樹的操作主要為創建,先序遍歷,中序遍歷,後序遍歷。還有層次遍歷。遍歷有兩種方式,一是采用遞歸的方式,二是采用轉換為棧進行遍歷,對二叉樹的遍歷本質上市將非線性結構轉換為線性序列。參考資料
  • 問題2:不太了解書上泛型
  • 問題2解決方案:在晚上查到了相應的定義:泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麽參數化類型怎麽理解呢?顧名思義,就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之為類型形參),然後在使用/調用時傳入具體的類型(類型實參)。參考資料

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

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX
  • ...

代碼托管

技術分享圖片

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

上周考試錯題總結

  • 錯題1及原因,理解情況
    What does the following method compute? Assume the method is called initially with i = 0
    public int question9(String a, char b, int i)
    {
    if (i = = a.length( )) return 0;
    else if (b = = a.charAt(i)) return question9(a, b, i+1) + 1;
    else return question9(a, b, i+1);
    }
    A . the length of String a
    B . the length of String a concatenated with char b
    C . the number of times char b appears in String a
    D . returns 1 if char b appears in String a at least once, and 0 otherwise
    E . the char which appears at location i in String a
    正確答案: C
    你的答案: D
    該方法將字符串a中的每個字符與字符b進行比較,直到達到字符串a的長度。
  • 錯題2及原因,理解情況
    An infinite loop and an infinite recursion
    A . are different because it is impossible to detect the latter, while it‘s quite easy to detect the former
    B . both continue to repeat indefinitely
    C . both will be caught by the compiler
    D . both will be caught by the Java Virtual Machine during execution
    E . none of the above
    正確答案: B
    你的答案: C
    無限循環和遞歸都是相似的,因為它們繼續無限地重復。 編譯器或運行時都不能捕獲它們

結對及互評

評分標準

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 基於評分標準,我給本博客打分:XX分。得分情況如下:xxx

點評過的同學博客和代碼

  • 本周結對學習情況
    • 結對同學學號1
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...
  • 上周博客互評情況
    • 學號1
    • 學號2

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 200/200 2/2 20/20
第二周 287/481 2/4 18/38
第三周 320/801 3/7 22/60
第四周 900/1600 2/9 30/90
第五周 807/2407 2/11 40/130
第六周 619/3023 2/13 40/170
第七周 621/3644 2/15 40/210
第八周 805/4364 2/17 40/250
第九周 1787/6211 2/19 40/290
第十周 792/ 7003 2/21 40/340

參考資料

  • 《Java程序設計與數據結構教程(第八版)》

  • 藍墨雲
  • ...

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