20172306 2018-2019《程序設計與數據結構》第三次總結
阿新 • • 發佈:2018-09-27
tex book 而在 整體 table 圖片 多個 繼續 info
20172306 2018-2019《Java程序設計與數據結構》第三周學習總結
教材學習內容總結
- 概述
- 隊列元素是先進先出,從隊列刪除元素的順序,與往隊列放置元素的次序是一樣的
- 在棧中,其處理過程只在棧的某一端進行;而在隊列中,其處理過程可在隊列的兩端進行
操作 說明 enqueue 向隊列末端添加一個元素 dequeue 從隊列前端刪除一個元素 first 考察隊列前端的那個元素 isempty 判定隊列是否為空 size 判定隊列中的元素數目 toString 返回隊列的字符串表示 - enqueue、dequeue、和first等操作對應於棧的push、pop、peek等操作。隊列中也沒有操作能讓用戶“抵達”隊列中部,同樣也沒有操作允許用戶重組或刪除多個元素。
- JavaAPI中的隊列
- 它提供了一個Queue接口,該接口定義了element方法,檢索隊列首部的元素,但不刪除它。提供了add和offer兩個方法(add可以確保隊列含有給定的元素,若給定元素未添加在隊列中,則拋出異常;offer把給定元素插入到隊列中,如果插入成功,返回true,反之,返回false)。提供了poll和remove兩個方法(當試圖從一個空隊列中刪除一個元素時,發出異常;若隊列為空,poll返回null,而remove拋出異常)。
- 使用隊列:代碼密鑰
- 隊列是一種可存儲重復編碼密鑰的便利集合
- 隊列的性質使得密鑰值能保持正確的次序,不用擔心何時抵達密鑰末尾,該如何從頭開始。
- 用鏈表和數組實現隊列
- 對於這部分的內容,書中是利用短一點的代碼還有圖示進行分析,同時還用上了之前學習的復雜度,其實就是和之前學習的一個簡單的集合。而就我來說,我覺得數組方面比較難,書中也說,由於隊列操作會修改集合的兩端,因此將一端固定於索引0處要求移動元素
- 固定數組實現策略在棧的實現中很高效,但是對於隊列,我們是在其兩端進行操作的,而順序也不是無關緊要的了,因此,用固定數組來實現棧的效率不高。
把數組看作是環形的,可以除去在隊列的數組實現中把元素移位的需要。
教材學習中的問題和解決過程
- 問題1:由於隊列操作會修改集合的兩端,因此將一端固定於索引0處要求移動元素,這句話不是很懂。
- 問題1解決方案:因為隊列是兩端進行改變,但是數組需要固定索引0,所以如果索引0處的值為1,當1被刪除時,那麽索引0處的值就變為2了,這個過程就是移動元素的意思。
- 問題2:為什麽把數組變成環形可以除去在隊列的數組實現中把元素移位的需要
問題2解決方案:在看書和依據自己的理解上來想,我認為,環形就是末端之後接的就是首端,所以了解這個圖示,就會發現不需要元素移位了。
代碼調試中的問題和解決過程
問題1:在進行PP5.1的編譯時,又在toString那出了問題
問題1解決方案:後來進行了單步調試,每次一進行方法編程,就可能會出現這樣的問題,後來發現還是=號的存在與不存在的問題
代碼托管
上周考試錯題總結
上周沒有錯題
結對及互評
點評模板:
- 博客中值得學習的或問題:
- 內容詳略得當
- 有一定的細節思考
- 代碼中值得學習的或問題:
- 想的比較全面,詳細
點評過的同學博客和代碼
- 本周結對學習情況
- 20172325
- 結對學習內容
- 兩個人一起看書,弄懂書中的內容
- 進行PP的編程
其他(感悟、思考等,可選)
我覺得這一章後面有點看不懂,後來還是問同學才懂得,而且對於數組實現隊列那部分,我覺得我還是很迷,所以還會繼續看一看的。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 0/0 | 1/1 | 6/6 | |
第二周 | 985/985 | 1/1 | 18/24 | |
第三周 | 663/1648 | 1/1 | 16/40 |
參考資料
- java中隊列的使用
- java軟件設計與數據結構
- 現代軟件工程
補充作業
技能 | 課前評估 | 課後評估 | ||
---|---|---|---|---|
程序理解 | 2 | 4 | ||
對編程整體的理解 | 4 | 6 | ||
架構設計、模塊化設計、接口設計 | 2 | 5 | ||
模塊實現、逐步細化 | 2 | 4 | ||
代碼復審/代碼規範/代碼質量 | 3 | 6 |
20172306 2018-2019《程序設計與數據結構》第三次總結