20172301 《程式設計與資料結構》第四周學習總結

來源:互聯網
上載者:User

標籤:動態   串列   出現   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解決方案:
    • 書上給出索引列表的概念

      索引列表為它的元素維護一段連續的數字索引值。

      然後書上說

      索引列表和數組的根本區別在於:索引列表的索引值總是連續的。

    • 先不說這句話如何理解,但是我覺得索引列表和數組的根本區別就是容量。數組申請空間之後大小就固定了。而列表的空間容量是可以動態增長的。
      而因為數組的容量是固定的,所以導致使用數組的時候造成空間的浪費。當你增加元素達到數組填滿了的時候,如果不開闢新的空間,則無法繼續增加元素。所以數組該設定多大是一個需要解決的問題,但有時候你無法確定到底需要多大的數組來儲存一個大小在變化的表。解決的其中一個辦法是當發現數組滿,申請一個新的更大的數組,然後將元素全部移至新的數組。但怎麼處理掉原數組也是一個問題。
      所以這時候,才會有列表的出現。
    • 而書上所指的 “坍塌”,根本指的是使用數組解決問題是增加刪除元素的效率。 插入或刪除某個元素,則其對應位置後的所有元素均需移動。這所需要的時間複雜度會增加。
  • ...
代碼調試中的問題和解決過程
  • 問題1:書P103 代碼中的instanceof的意義和具體用法
  • 問題1解決方案:
    • 首先,根據內容相關的理解,先給出我的一個初見。應該是判斷兩個物件類型是否一樣的一種方法
    • 然後,查詢API發現並沒有這個方法。之後我便理解了。因為,instanceof是Java的一個二元操作符(運算子),也是Java的保留關鍵字。 它不是一個方法或類,就沒有體現在API中。
    • 它的作用是判斷其左邊對象是否為其右邊類的執行個體,返回的是boolean類型的資料。用它來判斷某個對象是否是某個Class類的執行個體。
    • 注意:null值不是任何對象的執行個體, 所以下面這個例子返回了false,無論這個變數聲明的是什麼類型。
    String s = null;   if ( s instanceof String )   
    • instanceof也可以正確的報告一個對象是否是數組和特定的介面類型。
    if ( foo instanceof byte[] )
代碼託管上周考試錯題總結第三四章
  • 錯題1:Inherited variables and methods can be used in the derived class as if they had been declared locally.
    A .true
    B .false
  • 錯因:我認為父類的變數如果聲明成private,那麼子類是不可以直接調用的。所以我覺得是錯的。
  • Common features should be located as low in a class hierarchy as is reasonable, minimizing maintenance efforts.
    A .true
    B .false
  • 錯因:公開變數為了方便調用,應該聲明在最高的層次。

    第五章
  • The first operation removes an element at the front of the queue and returns a reference to it.
    A .True
    B .False
  • 錯因:這題我翻譯錯了,應該是first操作,我看成第一個操作了。尷尬。

結對及互評點評過的同學部落格和代碼
  • 上周部落格互評情況
    • 20172304
    • 20172328
其他
  • 十一的假期讓我們可能有些許懈怠,不過磨刀不誤砍柴工。適當的放鬆可以更好地學習。
學習進度條
程式碼數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 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 《程式設計與資料結構》第四周學習總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.