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

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

教材學習內容總結

集合

  • 1.集合是一種對象,相似於保存其餘對象的存儲庫
    集合中的元素一般是按照他們添加到集合的順序,或者是按元素之間的某種內在聯繫來組織的。
  • 二、抽象數據類型(ADT)是由數據和在該數據上所實施的具體操做構成的集合。
  • 三、棧是一種線性集合,元素按後進先出(LIFO)的方法進行處理,有push,pop,peek,isempty,size等經常使用操做
  • 四、棧是用於計算後綴表達式的理想數據結構
  • 五、Java接口定義了一個抽象方法集,有助於把抽象數據類型的概念與其實現分割開來。

鏈式結構---棧

  • 1.鏈式結構是基於數組的集合實現的主要代替方案,鏈表是一種鏈式結構,自引用式構成了鏈表的基礎,在鏈表中存儲的對象一般泛稱爲結點node
  • 二、鏈表會按需動態增加,所以本質上,它沒有容量限制
  • 三、只要有效地實現了恰當的操做,集合的任何實現均可用來求解問題。
  • 四、雙向鏈表須要維護兩個引用:首結點和末結點
  • 五、LinkedStack 類實現了StackADT 類接口,LinearNode 類用做結點類用於指向下一結點和指向本結點中存儲的元素
  • 六、存儲在集合中的對象不該該含有基本數據結構的任何實現細節。

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

  • 問題1:LinkedStack類與ArrayStack類的對比。
  • 問題1解決方案:百度後知道了二者不一樣的使用方法。
    stack的實現分爲兩種,一種是使用數組來模擬棧,另一種是使用鏈表來模擬棧,ArrayStack使用數組來實現,LinkedStack使用鏈表來實現。html

  • 《數據結構:棧》node

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

  • 問題1:ArrayStack類核心方法的實現(用數組實現棧)
  • 問題1解決方案:
    壓棧方法push
public void push (T element){
     if(count == stack.length)
         expandCapacity();
     stack[count] = element;
     count ++;
  }
private void expandCapacity(){
     T[]larger = (T[])(new Object[stack.length*2]);
     for(int index=0;index<stack.length;index++)
         larger[index] = stack[index];     
     stack = larger;
}

出棧方法pop()數組

public T pop() throws Exception
    {
        if (count==0)
            throw new Exception("PopExpection");
        else
        count--;
        T math = stack[count];
        stack[count] = null;
        return math;
    }

peek()方法數據結構

public T peek() throws Exception
    {
        if (count==0)
            throw new Exception("PeekExpection");
        else
        return stack[count-1];
    }

代碼託管

上週考試錯題總結

  • Which Growth function has the highest order?
    A .O(n log n)
    B .O(n2)
    C .O(2n)
    D .O(log n)
    哪一個生長函數的階數最高?
    正確答案應該是c,當時看錯了選成b。函數

  • Software systems need only to work to support the work of developers, maintainers, and users.
    A .True
    B .Flase
    正確答案應該是錯誤,軟件系統不單單隻須要支持開發人員、維護人員和用戶的工做。學習

  • 結對及互評

  • 基於評分標準,我給嚴域俊的博客打分:7分。得分狀況以下:測試

正確使用Markdown語法(加1分).net

模板中的要素齊全(加1分)設計

教材學習中的問題和解決過程, (加3分)調試

感想,體會真切的(加1分)

點評認真,能指出博客和代碼中的問題的(加1分)

  • 博客中值得學習的或問題:
    • 圖片和文字相結合,方便理解。
    • 增長了博客中的目錄,方便查看,同時樣式進行了更新,顯得更加美觀
    • 閱讀了許多資料,使得博客更有說服力。
  • 代碼中值得學習的或問題:
    - commit依舊很詳細,有條理性。

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172333
    • 結對學習內容
      • 對於課後項目的編寫。

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

這周相較於上週的課後習題有所簡單,但仍是應該花費不少時間去課本,只有把課本知識搞懂,才能更好的去作項目。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10
第二週 700/700 1/2 10/20

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:10小時

  • 實際學習時間:10小時

  • 改進狀況:

上一週因爲課後沒有仔細閱讀課本,致使測試的時候不少知識點都遺忘,這一次課後花了大量時間去閱讀課本,仍是頗有收穫的。

參考資料

相關文章
相關標籤/搜索