20172308《Java軟件結構與數據結構》第二週學習總結

教材學習內容總結

第 3 章 集合概述——棧

  1. 集合:一種彙集、組織了其餘對象的對象
  • 軟件系統中的另外一個類或對象經過集合預約的方式與該集合進行交互來使用這些集合
  • 多年以來軟件開發和研究人員定義了一些特定的集合類型致力於解決特定的問題類別
  • 集合分類:線性集合(元素按直線方式組織的集合),非線性集合(非直線方式組織)
    線性集合還能夠根據元素的特徵保持有序(如姓氏;非線性集合元素也能夠)
  1. 抽象:隱藏某些細節html

  2. 抽象數據類型(ADT):一種在程序設計語言中還沒有定義其值和操做的數據類型
  • 數據類型:一組值及做用於這些數值上的各類操做(如加減)
  • 集合是一種隱藏了實現細節的抽象(集合定義了一些接口操做)
  • 系統被劃分紅一些抽象的子系統,規定出這些子系統的目標以及它們之間的交互做用(以便不一樣的人員進行開發)
  • ADT的抽象性體如今ADT必須對其實現的細節進行定義,且這些對用戶不可見,因此,集合是一種抽象數據類型
  • 數據結構:一種用於實現集合的編程結構集
  1. Java集合API(應用程序編程接口):一個類集,表示一些特定類型的集合

第 四 章 鏈式結構——棧

  1. 棧:一種線性集合,後進先出

2.泛型:java

  • 定義一個類,尖括號中包含指向該類型的引用,以便他可以存儲、操做和管理在實例化以前沒有指定是何種類型的對象
  • 不能被實例化,他只是一個佔位符
  • 類的泛型,只有當該類被實例化時,才建立該類型的對象
  • 使用泛型來建立可用於安全高效地存儲任意類型的對象的集合

3.鏈表git

  • 由一些對象構成,其中每一個對象指向了鏈表的下一對象
  • 鏈表的首結點處理須要特別當心,以防止鏈表丟失

教材學習中的問題和解決過程

問題1:如何理解抽象和抽象數據類型
問題1解析:抽象數據類型和數據類型在實質上是一個概念,只不過是對數據類型的進一步抽象,不只限於各類不一樣的計算機處理器中已經實現的數據類型,還包括爲解決更爲複雜的問題而由用戶自定義的複雜數據類型。

所謂數據抽象是指用ADT描述程序處理的實體時,強調的是其本質的特徵,不管內部結構如何變化,只要本質特性不變,就不會影響其外部使用。
例如,在程序設計語言中,常用的數據類型 int,它就能夠理解爲是一個抽象數據類型,在不一樣的計算機或者操做系統中,它的實現方式可能會有不一樣,可是它本質上的數學特性是保持不變的。
例如,在統計學生信息時,常用姓名、學號、成績等信息,咱們能夠定義這樣的一個抽象數據類型student,它封裝了姓名、學號、成績三個不一樣類型的變量,這樣操做student的變量就可以很方便的知道這些信息了。算法

【參考資料】如何理解數據結構中的抽象數據類型?編程

問題2:如何理解「經過使用接口名做爲返回類型,方法就不會侷限於實現棧的任何特定類」
問題2解析:接口把方法的特徵和方法的實現分割開來。這種分割體如今接口經常表明一個角色,它包裝與該角色相關的操做和屬性,而實現這個接口的類即是扮演這個角色的演員。

Java接口自己沒有任何實現,由於Java接口不涉及表象,而只描述public行爲,因此Java接口比Java抽象類更抽象化。數組

【參考資料】java 使用接口的好處?安全

代碼運行中的問題及解決過程

問題1:在實現鏈表的刪除節點的代碼運行中出現瞭如圖問題:


運行不出結果,猜想應該是循環出了問題,無限循環?
代碼如圖:

循環裏的條件,刪除的節點爲空的可能性很小,因此要再加上一個條件,如圖:

要刪除的節點中的學號與當前節點中的學號相等時便可跳出循環。
還順便測試了一下在刪掉了插入節點的左右兩端的其中一個節點以後,還可否正常插入節點,emmm,是不行滴:
數據結構

上週考試錯題總結

  • 錯題1:學習

  • 錯題1解析:emmm, 手誤測試

  • 錯題2:

  • 錯題2解析:不是很理解爲何是錯的;一個高效的系統的程序算法確定比一些冗雜的程序算法解決問題要容易的多吧,並且佔用內存、CPU啥的都不多吧。百度的話也沒看到相關解釋

  • 錯題3:

  • 錯題3解析:棧的數據存儲位置可能不是連續的,可是棧裏的每個對象都有指向下一對象的引用,用數組實現的棧也是同樣的

  • 錯題4:

  • 錯題4解析:這題的C選項寫的多是2^n吧

代碼託管

因爲上學期的最後的代碼統計是在虛擬機裏統計的,和IDEA有所差距

下面是這學期IDEA的統計結果

因此,手動統計了一下代碼數量,560行

結對及互評

  • 博客中值得學習的或問題:
    • 侯澤洋同窗的博客排版工整,界面很美觀
    • 問題總結作得很全面
    • 對於書上的疑惑總會想辦法解決它,這種探索的精神值得我去學習
  • 代碼中值得學習的或問題:
    • 對於編程的編寫總能找到角度去解決
  • 本週結對學習狀況
    • 20172302
    • 結對學習內容
      • 第三章內容:集合概述——棧
      • 第四章內容:鏈式結構——棧

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 4/4
第二週 560/560 1/2 6/10
相關文章
相關標籤/搜索