標籤:動態 串列 出現 http 目標 鏈式 logs local 程式碼數
20172301 《程式設計與資料結構》第四周學習總結教材學習內容總結
- 列表:列表集合沒有內在的容量大小,它可以隨著需要而增大。
- 有序列表:列表中元素有內在關聯,直接定義了元素之間的順序。
- 無序列表:元素按著使用者所選擇的任意方式排序
- 索引列表:元素可以用索引來引用。
- 實現Serializable介面。目的是為了某個對象能使用序列化進行儲存。 該介面中沒有任何方法,只是表明該對象可以轉換為序列化表示形式。
- Josephus問題是適合用索引列表來求解的計算問題。這類問題著眼於,當列表中的事件不是按順序取出而是按每隔i個元素提取,直到一個不剩,如何找到這些事件的順序。
- 使用數組實現列表:要把列表的一端固定在索引0處,設定一個整數變數rear表示列表中的元素數目,同時表示列表末端的下一個可用位置。
- remove操作:尋找作為參數傳遞的元素,找到就從列表中將其刪除。
- contains操作:在這種情況下需要n個比較操作。方法平均需要n/2次比較操作,因而該操作的複雜度為O(n)。
- add操作:有序列表中需要進行n次比較和平移操作,操作的複雜度為O(n)。無序列表中addToFront需要平移n-1個元素,操作複雜度為O(n)。addToRear操作複雜度為O(1)。addAfter需要比較和平移n次,操作複雜度為O(n)。
- 使用鏈表實現列表:
- remove操作:鏈表實現的不需要平移元素來填補空隙。但是在最壞的情況下,需要進行n次比較操作的情況,確定目標不再列表中,因此其時間複雜度也為O(n)。
教材學習中的問題和解決過程
- 問題1:書P93 鏈表和列表的具體區別。列表是不是就是線性表。
- 問題1解決方案:
- 首先,注意,這裡的鏈表不同於我們所學習的物理結構鏈式結構,它是一種線性表。
- 列表則是一種線性表集合,使事物以線性列表的方式進行組織。簡單來說,按順序排好的元素集合就是表。 列表也可以使用鏈表或數組來進行實現。列表有三種類型:有序列表,無序列表,索引列表。
- 線性表有兩種儲存結構:順式儲存結構、鏈式儲存結構。
- 所以,由此可見,列表對於鏈表應該是一種內含項目關聯性。不確定列表與線性表的關係。
- 問題2:索引鏈表和數組的區別是什嗎?不應該是容量嗎?書上P95 的坍塌是應該如何理解。
- 問題2解決方案:
書上給出索引列表的概念
索引列表為它的元素維護一段連續的數字索引值。
然後書上說
索引列表和數組的根本區別在於:索引列表的索引值總是連續的。
- 先不說這句話如何理解,但是我覺得索引列表和數組的根本區別就是容量。數組申請空間之後大小就固定了。而列表的空間容量是可以動態增長的。
而因為數組的容量是固定的,所以導致使用數組的時候造成空間的浪費。當你增加元素達到數組填滿了的時候,如果不開闢新的空間,則無法繼續增加元素。所以數組該設定多大是一個需要解決的問題,但有時候你無法確定到底需要多大的數組來儲存一個大小在變化的表。解決的其中一個辦法是當發現數組滿,申請一個新的更大的數組,然後將元素全部移至新的數組。但怎麼處理掉原數組也是一個問題。
所以這時候,才會有列表的出現。
- 而書上所指的 “坍塌”,根本指的是使用數組解決問題是增加刪除元素的效率。 插入或刪除某個元素,則其對應位置後的所有元素均需移動。這所需要的時間複雜度會增加。
- ...
代碼調試中的問題和解決過程
代碼託管上周考試錯題總結第三四章
結對及互評點評過的同學部落格和代碼
其他
- 十一的假期讓我們可能有些許懈怠,不過磨刀不誤砍柴工。適當的放鬆可以更好地學習。
學習進度條
|
程式碼數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
| 目標 |
5000行 |
30篇 |
400小時 |
|
| 第一周 |
0/0 |
1/1 |
10/10 |
|
| 第二周 |
610/610 |
1/2 |
20/30 |
|
| 第三周 |
593/1230 |
1/3 |
18/48 |
|
| 第四周 |
300/1300 |
2/5 |
30/78 |
|
參考資料
- 資料結構——表與鏈表
- java數組列表和數組有什麼不同?
- 線性表 - 李小白
- java中的instanceof用法詳解
- instanceof的用法
20172301 《程式設計與資料結構》第四周學習總結