20172319 2018.09.17-09.23
《程序設計與數據結構》第3周學習總結
目錄
教材學習內容總結
第五章 隊列:
- 5.1 概述:
- 隊列(queue): 一種線性集合,其元素從一端加入,從另外一端刪除。處理方式: 先進先出(First In First Out, FIFO)。
- 比較FIFO與LIFO兩種處理方式:
-
-
- 隊列中:處理過程可在兩端進行。

隊列的操做:html
-
enqueue |
向隊列末端添加一個元素 |
dequeue |
從隊列前端刪除一個元素 |
first |
考察隊列前端的那個元素 |
isEmpty |
斷定隊列是否爲空 |
size |
斷定隊列中的元素數目 |
toString |
返回隊列中的字符串表示 |
- 5.6 用鏈表實現隊列:
- 隊列與棧的主要差異: 要操做鏈表的兩端。
- 1.需建立兩個引用:一個指向鏈表首元素(head),一個指向鏈表末元素(tail);
- 2.另需一個整型變量count來跟蹤隊列中的元素數目;
- 3.若鏈表是單向連接,則應區分往鏈表的哪端添加或入列元素與從哪端刪除或出列元素;
- 4.enqueue操做中,往前端和末端的添加新元素對應的處理步驟類似:新節點的next指向head,而後head指向新節點;
- 5.dequeue操做則有所區別:
-
- 1.表末端enqueue,表前端dequeue,在進行dequeue時,只需設置一個臨時變量指向鏈表前端的元素,而後把front變量設置爲第一個結點的next指針的值;
-
- 2.表前端enqueue,表末端dequeue,需把一個臨時變量設置爲指向鏈表末端的元素,而後將tail指針設置爲指向當前末端以前的結點。
雙向鏈表能夠解決遍歷鏈表的問題,所以無所謂從哪端出入列。
前端
- 5.7 用數組實現隊列:
- 將隊列的某一端固定在數組的索引0處,全部元素不間斷地存放在數組中。
- 元素移位,dequeue的複雜度爲O(n);
- 用固定數組實現棧的效率並不高;
環形數組(circular array),數組的最後一個索引後面跟的是第一個索引;能夠去除在隊列的數組實現中元素移位的須要java
- 5.8 雙端隊列(Deque):
隊列的擴展,容許從隊列的兩端添加、刪除和查看元素。git
返回目錄編程
教材學習中的問題和解決過程
返回目錄數據結構
代碼調試中的問題和解決過程
- 問題1:隊列前端位置元素丟失。

- 20172301並不在隊列裏;
- 解決:
- 經過對代碼順序的更換,咱們發現tostring和first兩個方法的內容發生了衝突;


- 最後經過對方法的代碼調試,發如今隊頭的元素已被修改,因此致使並不是預期元素:

- 經過將其修改,最終實現了預想的效果:

返回目錄架構

返回目錄模塊化
上週考試錯題總結
返回目錄
結對及互評
點評過的同窗博客和代碼
返回目錄
其餘(感悟、思考等,可選)
返回目錄
學習進度條
目標 |
3000行 |
15篇 |
300小時 |
第一週 |
0/0 |
1/1 |
12/12 |
第二週 |
935/935 |
1/2 |
24/36 |
第三週 |
849/1784 |
1/3 |
34/70 |
返回目錄
補充做業
對編程總體的理解 |
3 |
8 |
程序理解 |
5.5 |
8 |
代碼質量 |
4 |
7 |
架構設計、模塊化設計、接口設計 |
3 |
7 |
效能分析和改進 |
2.5 |
6 |
處理大數據 |
2.5 |
7 |
返回目錄
參考資料
數據結構(Java實現)之單向鏈表的節點表示、插入、刪除、單向鏈表反轉和串聯
【數據結構】鏈表的原理及java實現
java集合包總結(添加、刪除等操做實現原理)
返回目錄