20172301 《程序設計與數據結構》第二週學習總結

20172301 《程序設計與數據結構》第二週學習總結

教材學習內容總結

第三章

  • 集合能隱藏某些細節。
    • 線性集合和非線性集合
  • 抽象數據類型(ADT)
    集合是一種隱藏了實現細節的抽象。
  • Java集合API(Application Programming Interface)
  • 棧 (後進先出)
    例如:批改做業,進出電梯。
    本性:全部的操做都是在一端進行。 一端指的是頂端,因此棧不適用解決須要訪問集合中間或底部的元素的問題。
  • 使用棧計算後綴表達式
    注意:當遇到一個操做符時,計算規則應能夠檢索其以前的兩個操做數。第一個彈出的操做數實際上是表達式的第二個操做數,而第二個彈出的操做數則是表達式的第一個操做。對於除法和減法須要特別注意。

第四章

  • 連接做爲引用
    • 對象引用變量能夠用來建立鏈式結構。
    • 對象引用變量存放的是對象的地址,表示該對象在內存中的存儲位置。
    • 鏈表有一些對象構成,其中每一個對象指向了鏈表中的下一對象。
    • 鏈表會按需動態增加,所以在本質上,它沒有容量限制。
    • 鏈表的大小能夠按需伸縮以容納要存儲的元素數量,所以鏈表是動態結構。全部動態建立的對象都來自於一個名爲系統堆自由存儲的內存區。
  • 管理鏈表
  • 從列表中插入和刪除元素時有兩種狀況:一種是處理第一個結點的狀況,另外一種時處理其它結點的狀況。經過在列表的前端引入哨兵節點啞節點,就能夠去除這種涉及第一個結點的狀況。哨兵結點能夠做爲一個假的第一個結點,並無真正表示列表中的某個元素。當使用了哨兵結點時,全部的插入和刪除操做就都屬於第二種狀況了。html

  • 無連接的元素
  • 存儲在集合中的對象不該該含有基本數據結構的任何實現細節。前端

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

  • 問題1:UML類圖符號箭頭含義。
  • 問題1解決方案:這個在上學期探究過,可是並無記住,故仍是要從新加深一遍記憶,方便後來的學習。
    • 1.類(Class):使用三層矩形框表示。 第一層顯示類的名稱,若是是抽象類,則就用斜體顯示。 第二層是字段和屬性。 第三層是類的方法。 注意前面的符號,‘+’表示public,‘-’表示private,‘#’表示protected。
    • 2.接口:使用兩層矩形框表示,與類圖的區別主要是頂端有< >顯示 。 第一行是接口名稱。 第二行是接口方法。
    • 3.繼承類(extends) :用空心三角形+實線來表示。
    • 4.實現接口(implements) :用空心三角形+虛線來表示
    • 5.關聯(Association) :用實線箭頭來表示,例如:燕子與氣候
    • 6.聚合(Aggregation) :用空心的菱形+實線箭頭來表示 聚合:表示一種弱的‘擁有’關係,體現的是A對象能夠包含B對象,但B對象不是A對象的一部分,例如: 公司和員工
    • 7.組合(Composition):用實心的菱形+實線箭頭來表示 組合:部分和總體的關係,而且生命週期是相同的。例如:人與手
    • 8.依賴(Dependency) :用虛線箭頭來表示,例如:動物與氧氣
  • 問題2:書P36 設計要點 提到git

    取消操做一般是使用一種名爲drop - out的棧來實現的。
    與通常棧不一樣的是drop - out棧對能存儲的元素數量有限制,一旦達到限制,若是有新元素要壓入,那麼棧底的元素將被從棧中丟棄掉。算法

  • 問題2解決方案:能夠從新申請一塊數組空間。 拷貝一下數據,釋放原來的數據,刪除第一個元素,並總體向前移動。數組

  • 問題3:Stack類是從Vector類派生而來的。一些操做會與棧的基本假設發生衝突?
  • 問題3解決方案:
    數據結構

並未從API中找到結果。less

  • 問題4:鏈表棧的push操做在鏈表末端而不是在鏈表前段添加結點。時間複雜度如何?
  • 問題4解決方案:
    • 要在鏈表末端壓入結點,咱們必須遍歷鏈表以達到這個末元素。此時時間複雜度爲O(n)
    • 添加一個老是指向鏈表末元素的引用,會影響鏈表末元素的刪除。此時時間複雜度爲O(1)

代碼調試中的問題和解決過程

  • 問題1:頭指針和頭結點
  • 問題1解決方案:
    • 頭指針是指指向開始結點的指針(沒有頭結點的狀況下)。一個單鏈表能夠由其頭指針惟一肯定,通常用其頭指針來命名單鏈表。
    • 頭結點是在鏈表的開始結點以前附加的一個結點。有了頭結點以後頭指針指向頭結點,不論鏈表是否爲空,頭指針老是非空,並且頭結點的設置使得對鏈表的第一個位置上的操做與在表中其它位置上的操做一致。
    • 頭結點能夠沒有,可是頭指針不能沒有,否則沒法訪問鏈表的元素;
    • 頭結點須要分配內存給它,而頭指針不須要。
  • 問題2:AS中組件不顯示問題。提示錯誤: failed to load AppCompat ActionBar with unkNown error
    學習

  • 問題2解決方案:
    • 在AndroidManifest.xml文件中找到全局樣式文件 Theme,按住Ctrl+鼠標點進去
      .net

    • 進入到這個文件,在前面增長 「Base」
      設計

  • 問題3:AS報錯
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you

  • 問題3解決方案:
    • 點擊「魔法棒」。

代碼託管

上週考試錯題總結

  • If the algorithm is inefficient, a faster processor will help. B
    A .True
    B .Flase
  • 解析:若是算法效率低下,一個更快的處理器將有所幫助。確定有所幫助啊,可是幫助的這個尺度很難把握。

結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20172304
    • 教材總結的很是細緻,學習態度嚴謹不少,問題略簡單,教材問題中「醫療」應該是「意料」吧,因而可知,答案也不是單純的複製粘貼,有本身的思考和理解。
    • 20172328
    • 教材內容圖文並茂,內容很是豐富。代碼問題1的解決方案的貼圖尚未,應該是忘記上傳了吧。冒泡排序和插入排序是同一種排序麼,我記得上學期冒泡排序有個別名。

其餘

放棄不難,但堅持必定很酷。事情沒有好壞對錯。堅持了,努力了,成功與否都顯得再也不重要。舞臺是否光鮮,全在於你。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10
第二週 610/610 1/2 20/30

參考資料

相關文章
相關標籤/搜索