隊列:隊列是一種線性集合,其元素從一端加入,從另外一端刪除,隊列中的元素是按先進先出的方式處理的(FIFO)。一個隊列一端爲前端(front,head),
一端爲末端(rear,tail)。
html
隊列ADT所定義的操做前端
Java API中的隊列
1.Java集合API提供了java.util.Stack類,它實現了棧集合。但它並無提供隊列類,而是提供了一個Queue接口,
由多個類(包括LikedList類)來實現的。(課本例題5.1,5.3的代碼都使用了Queue接口)
2.java.util.Stack類提供了傳統的push、pop和peek等操做。而Queue接口並無實現傳統的enqueue、dequeue和first操做。
Queue接口定義了另外兩種方法,往隊列中添加元素或從隊列中刪除元素。這些方法在異常類處理上有很大的不一樣。
一個是提供了一個布爾返回值,另外一個是拋出一個異常。java
隊列的ADT
如同棧同樣,可定義一個泛型的QueueADT接口,表示隊列的操做,,是通常目標與各類實現方式分開。git
問題1:編程
在環形數組裏進行添加或刪除元素時,不須要移動哪一個元素
這個是怎麼理解呢?數組
問題1解決方案:
數據結構
看這幅圖是很好理解的,把元素添加進入數組,可是刪除元素後,數組中的元素不進行移動,而是停留
在原來的位置,後續添加的元素,則跟在以前的元素後,讓前面的位置爲空,而後進行循環。學習
問題1:課本上的代碼有不少的錯誤,例如例題Codes
測試
問題1解決方案:
這個例題的本意是想要對加密的內容進行解密,並且課本上encoded += (char)message.charAt(scan) - keyValue);
這行代碼
不只寫法上存在錯誤——多了一個右括號,並且邏輯是徹底不符合意思的,因而我進行了修改(我認爲這是例題想要實現的功能)
編碼
(statistics.sh腳本的運行結果截圖)
上週沒有習題測試
本週結對學習狀況
原本很開心中秋佳節不用寫博客了,如今看來是我太天真了(;´д`)ゞ,因而假期沒有咋學習的我,節假日一結束
就陷入了瘋狂看課本的模式。總結了一下,咱們這兩週就是細化了對棧和隊列的學習,以前我只會使用棧和隊列,
而他們的一些方法是如何實現的卻沒有考慮過,通過學習才發現,咱們以前一直學習的數組和鏈表是這麼的應用普遍
,每個均可以用來實現棧和隊列的不少方法學習果真是由淺入深,當初的我是隻知其然,不知其因此然,而如今,
Java的學習則要求我知道因此然,雖然國慶又快要到了,可是看樣子博客仍是不會免的呀〒▽〒。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | ||
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 10/10 | |
第二週 | 326/326 | 1/2 | 18/28 | 學習在一點點的深刻 |
第三週 | 784/1110 | 1/3 | 25/53 |