20172311《程序設計與數據結構》第三週學習總結

20172311《程序設計與數據結構》第三週學習總結

教材學習內容總結

第五章 隊列

  • 在任何的隊列中,元素都是從一端進入,從另外一端離開
  • 隊列是一種線性集合,先進先出即第一個進入的元素也是第一個退出的元素
  • 與棧相似,隊列中沒有操做能讓用戶「抵達」隊列中部,一樣也沒有操做容許用戶重組或刪除多個元素
  • 隊列的首要做用是保持順序
  • 對於單向鏈表實現隊列,可選擇從末端入列,從前端出列
  • 用固定數組來實現棧的效率不高,把數組看做是環形的,能夠除去在隊列的數組實現中把元素位移的須要
  • 教材學習中的問題和解決過程

  • 問題1:隊列的數組實現中,環形數組是如何實現以及發揮做用的
  • 問題1解決方案:
    一般,一個元素入列後,rear的值要遞增。但當enqueue操做填充了數組的最後一個單元時,rear的值必須設置爲0,代表下一個元素應該存儲在索引0處。下面的代碼行將正確地更新rear的值:
rear = (rear+1)% queue.length;
  • 問題2:使用環形數組實現隊列中擴大數組容量的具體是如何實現的
  • 問題2解決方案:
    1.使用以下代碼實例化一個容量爲原數組兩倍的數組
T[] larger=(T[]) (new Object[queue.length*2]);

2.使用以下代碼將原數組裏的元素複製到新數組裏html

for (int scan = 0; scan < count; scan++)
        {
            larger[scan] = queue[front];
            front = (front + 1) % queue.length;
        }

3.使用以下代碼從新確立front指針和rear指針並將新數組再賦給原數組前端

front = 0;
        rear = count;
        queue = larger;

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

  • 問題1:pp5.1LinkedQueue類的測試類在運行時打印隊列的方法有問題,致使打印內容呈現出亂碼的形式,以下圖:
    git

  • 問題1解決方案:
    通過仔細檢查發現是toString()方法存在問題,再經過調試發現是紅圈標註部分出現的問題,恰當改正以後問題得以解決,改正後代碼及運行截圖以下:
    數組

代碼託管

上週考試錯題總結

待定數據結構

補充做業

你認爲對你特別重要的技能,記下你目前的水平,和你想在課程結束後達到的水平架構

我認爲對我特別重要的技能 我目前的水平 我想在課程結束後達到的水平
Comprehension(理解程序) 可以理解一些初級代碼並可以簡單運用debug 可以較好地理解複雜代碼並熟練運用debug
Design(架構設計、模塊化設計、接口設計) 可以進行簡單程序的設計 可以對較複雜的程序進行較好的設計
Performance(效能分析和改進) 基本不考慮這方面,只考慮可否正常運行 可以儘可能提升程序的效能
Test(單元測試、代碼覆蓋率) 單元測試基本掌握,代碼的覆蓋率基本不考慮 提升下降代碼覆蓋率的能力
BigData (大數據) 基本不會處理大數據 可以較輕鬆的處理大數據

結對及互評

  • 本週結對學習狀況
    對課本上的諸多疑問點進行了討論,同時對代碼實現過程當中遇到的一些問題也經過討論得以解決

感想

繼續努力!模塊化

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 4/4
第二週 464/464 1/2 10/14 理解掌握了用數組和鏈表實現棧的方法
第三週 494/494 1/3 10/24 理解掌握了用數組和鏈表實現隊列的方法
  • 計劃學習時間:15小時單元測試

  • 實際學習時間:10小時學習

  • 改進狀況:注重動手能力!測試

參考資料

相關文章
相關標籤/搜索