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

20172319 2018.09.10-09.16

《程序設計與數據結構》第2周學習總結

目錄


教材學習內容總結

第三章 集合概述——棧:

  • 3.1 集合:
  • 集合(collection)是一種彙集、組織了其餘對象的對象。其定義了一種特定的方式 ,能夠訪問、管理所包含的對象(稱爲該集合的元素)。
  • 集合的使用者——一般是軟件系統中的另外一個類或對象——只能經過這些預約的方式與該集合進行交互。
  • 集合能夠分爲兩大類:線性集合和非線性集合:
  • 線性集合是一種其元素按直線方式組織的集合,一般按照添加的順序。
  • 非線性集合時一種其元素按某種非直線方式組織的集合,一般按照內在關係組織。
  • 集合是一種抽象數據類型。html

  • 3.1.1 抽象數據類型
  • 抽象(abstraction)能隱藏某些細節;
  • 數據類型(data type): 一組值及做用於這些數值上的各類操做。
  • 數據結構(data structu):一種用於實現集合的編程結構集。
  • ADT的抽象性:必須對其實現的細節做出定義,但這些定義用戶不可見。java

  • 3.1.2 java集合API
  • java標準類庫中定義的幾種表示不一樣類型集合的類
    git

  • 3.2 棧集合: 線性集合
  • 後進先出(Last in , first out, LIFO) : 棧的基本使用就是用於顛倒順序;
  • 棧的一些操做
  • /**編程

    • Stack類數組

    • 棧:桶型或箱型數據類型,後進先出,相對堆Heap爲二叉樹類型,能夠快速定位並操做安全

    • Stack ,支持泛型 數據結構

    • public class Stack extends Vector 函數

    • Stack的方法調用的Vector的方法,被synchronized修飾,爲線程安全(Vector也是)學習

    • Stack methods:測試

    • push : 把項壓入堆棧頂部 ,並做爲此函數的值返回該對象

    • pop : 移除堆棧頂部的對象,並做爲此函數的值返回該對象

    • peek : 查看堆棧頂部的對象,,並做爲此函數的值返回該對象,但不從堆棧中移除它

    • empty : 測試堆棧是否爲空

    • search : 返回對象在堆棧中的位置,以 1 爲基數

    • */

  • 3.3 主要的面象對象概念: 已在以前的博客中提過,這裏再也不重複敘述。

  • 3.4 使用棧計算後綴表達式:
  • 中綴表達式:6 - 9
  • 後綴表達式:6 9 -
  • 計算過程:由左至右,將掃描到的操做符應用與前面相鄰的兩個操做數

  • 3.5 異常(exception):
  • 異常是一個對象,其定義了一種非正常或錯誤的狀況,但其不一樣於錯誤(沒法恢復),其能夠被捕獲或適當地處理。

  • 3.6 棧ADT:
  • java接口定義了一個抽象方法集,能夠將抽象類型的概念與實現分隔開
  • 3.7 用數組實現棧:
  • 容量:數組的單元數量,數組一旦建立好,其不可變。

  • 3.8 ArrayStack類:
  • 數組實現棧的一個應用實例,包含棧的一些基本操做。

第四章 鏈式結構——棧:

  • 4.1 連接做爲引用:
  • 鏈式結構: 使用對象引用變量(指針)來建立對象之間的連接。
  • 鏈表由許多對象構成,每一個對象指向了鏈表中的下一個對象。

  • 4.2 管理鏈表:
  • 訪問元素:從第一個鏈表元素開始,順着鏈表往下進行。
  • eg:

Person current =  first;
for (int i = 0; i<n; i ++)
  current = current.next
  • 查找特定元素:

  • eg:

String searchstring = "要尋找的元素";
Person current = first;
while ((not(current.equals(searchstring))&&(current.next !=null)
current = current.next;
  • 插入、刪除節點:
  • 注意先後順序,防止鏈表丟失。

  • 4.3 無連接的元素:
  • 雙向鏈表:兩個引用,分別指向上下兩個元素,鏈表兩端放置啞節點。

  • 4.6 用鏈表實現棧:
  • 從鏈表的一端添加或刪除元素。

返回目錄


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

  • 問題1:無。
  • 解決:

返回目錄


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

  • 問題1:沒法對鏈表的首節點作操做。



  • 解決:能夠看到,return得到的Head本是677,但在實際應用時又變爲676,最終使用

System.out.println
  • 直接輸出,雖然面板上能看見其在鏈表的頭部,但在內部並無接上鍊表,只是先於鏈表前打印。

返回目錄


代碼託管

返回目錄


上週考試錯題總結

  • 錯題1:

  • 解決: 誤選,堆棧可用於保存數據。

  • 錯題2:

  • 解決:分不清是2n仍是2的n次方。

返回目錄


結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況

返回目錄


其餘(感悟、思考等,可選)


學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 3000行 15篇 300小時
第一週 0/0 1/1 12/12
第二週 935/935 1/2 24/36

返回目錄


參考資料

數據結構(Java實現)之單向鏈表的節點表示、插入、刪除、單向鏈表反轉和串聯
【數據結構】鏈表的原理及java實現
java集合包總結(添加、刪除等操做實現原理)

返回目錄

相關文章
相關標籤/搜索