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

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

教材學習內容總結

1、堆

  • 堆就是具備兩個附加屬性的一棵二叉樹
  • 對每一結點,它小於或等於其左孩子和右孩子html

    2、向堆中添加一個元素

    1.將元素添加爲新的葉節點,同時保持樹是徹底樹。
    2.將該元素向根的方向移動,將它與父結點對換,直到其中的元素關係知足要求爲止。
    如圖所示:



    git

與次優二叉樹相對,二叉排序樹是一種動態樹表。其特色是:樹的結構一般不是一次生成的,而是在查找過程當中,當樹中不存在關鍵字等於給定值的結點時再進行插入。新插入的結點必定是一個新添加的葉子結點,而且是查找不成功時查找路徑上訪問的最後一個結點的左孩子或右孩子結點。算法

  • 1.首先執行查找算法,找出被插結點的父親結點。
    判斷被插結點是其父親結點的左、右兒子。將被插結點做爲葉子結點插入。
    若二叉樹爲空。則首先單獨生成根結點。首先執行查找算法,找出被插結點的父親結點。
    判斷被插結點是其父親結點的左、右兒子。將被插結點做爲葉子結點插入。
    若二叉樹爲空。則首先單獨生成根結點。數據結構

  • 2.執行刪除結點算法
    在二叉排序樹刪去一個結點,分三種狀況討論:
    1.若結點爲葉子結點,即左子樹和右子樹均爲空樹。因爲刪去葉子結點不破壞整棵樹的結構,則能夠直接刪除此子結點。
    2.若結點只有左子樹或右子樹,此時只要令或直接成爲其雙親結點的左子樹或右子樹便可,做此修改也不破壞二叉排序樹的特性。
    3.若結點的左子樹和右子樹均不空。在刪去結點以後,爲保持其它元素之間的相對位置不變,可按中序遍歷保持有序進行調整,能夠:
    令結點的直接前驅(或直接後繼)替代該結點,而後再從二叉排序樹中刪去它的直接前驅(或直接後繼)即讓結點的左子樹(若是有的話)成爲結點左子樹的最左下結點(若是有的話),再讓左子樹成爲結點的左右結點的父結點。學習

4、優先級隊列

  • 隊列,數據只能在一端進入,另外一端出來,可是它強調了「優先」二字,因此,已經不能算是通常意義上的隊列了,它的「優先」意指取隊首元素時,有必定的選擇性,即根據元素的屬性選擇某一項值最優的出隊。
  • 優先隊列是0個或多個元素的集合,每一個元素都有一個優先權或值,對優先隊列執行的操做有1:查找;2: 插入一個新元素;3: 刪除.在最小優先隊列中,查找操做用來搜索優先權最小的元素,刪除操做用來刪除該元素;對於最大優先隊列,查找操做用來搜索優先權最大的元素,刪除操做用來刪除該元素.優先權隊列中的元素能夠有相同的優先權,查找與刪除操做可根據任意優先權進行.。

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

  • 問題1:堆和二叉排序樹的差異在哪?
  • 問題1解決方案:首先咱們須要瞭解二叉樹中元素是如何放置的。咱們定義一個根的元素,而後把新加進來的元素和根比較(以第二個加進來的元素爲10,根爲20舉例)。10<20,因此咱們將10放在根的左結點,因爲根的左子樹目前只有一個元素因此咱們將10設置爲根的左子樹的根。若是第三個元素是11,那麼咱們首先和根比較,小於20,那麼咱們將11往下放,與10比較,比10大,那麼咱們放在10的右結點上。(若是添加的元素比20小也比10小那麼放在10的左結點)以此類推。右子樹也是同樣的道理。總的來講,二叉樹的元素放置是以根爲基準,比根大的放右子樹,比根小的放左子樹。若是同樣的話左右子樹任君挑選。

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

  • 問題1:在編寫樹的方法時,RemoveFirst方法一直報錯
  • 問題1解決方案:在檢查後發現是在ListADT時沒有寫進去致使出現了錯誤。

代碼託管

上週考試錯題總結

.net

結對及互評

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

正確使用Markdown語法(加1分)設計

模板中的要素齊全(加1分)調試

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

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

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

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

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172333
    • 結對學習內容
      教材第11章,運行教材上的代碼
      完成課後自測題,並參考答案學習
      完成課後自測題,並參考答案學習
      完成程序設計項目:至少完成PP11.三、PP11.8

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

這一週花了點心思在這一章上面,也好好閱讀了不少內容,掌握的還算能夠。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10
第二週 700/700 1/2 10/20
第三週 700/1400 1/3 10/30
第四周 500/1900 2/5 10/40
第五週 569/2469 1/6 10/50
第六週 1070/3539 1/7 10/60
第七週 986/4625 1/8 10/70
第八週 1023/5648 2/9 10/80

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

  • 計劃學習時間:10小時

  • 實際學習時間:10小時

參考資料

相關文章
相關標籤/搜索