為什麼要學習資料結構
學習通用性知識,突破技能瓶頸 為了提高自己的程式設計技術水平,決定吧資料結構和演算法好好學習一遍。至於為什麼用swift,因為我是iOS開發,哈哈。喜歡用swift而已。
學習方法
- 用swift改造《大話資料結構》的程式碼
- 閱讀第一遍的時候從頭到尾,摘抄一些重點知識
- 寫出演算法實現+適當的練習
資料結構緒論
資料結構:是相互之間存在一種或多種特定關係的資料元素的集合
按照視點不同,我們把資料結構分為邏輯機構和物理結構。
- 邏輯結構:資料物件中資料元素之間的相互關係
- 物理結構:資料的邏輯結構在計算機中的儲存形式
邏輯結構:
- 集合結構:集合結構中的資料元素除了同屬於一個集合外,它們之間沒有其他關係。
- 線性結構:線性結構中的資料元素之間是一對一的關係
- 樹形結構:樹形結構中的資料元素之間存在一對多的層次關係
- 圖形結構:圖形結構的資料元素是多對多的關係。
物理結構:
- 順序儲存結構:是把資料元素存放在地址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的。(陣列)
- 鏈式儲存結構:是把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。(單連結串列、雙連結串列)
資料型別
資料型別 = 集合 + 操作
資料型別: 是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
抽象資料型別
抽象資料型別(Abstract Data Type,ADT):是指一個數學模型及定義在此模型上的一組操作。
需要注意的是:抽象資料型別的定義僅僅取決於它的一組邏輯特性,而與其在計算機內部如何表示和實現沒有關係。而且,抽象資料型別不僅僅指那些已經定義並實現的資料型別,還可以是計算機程式設計者自己定義的資料型別。 抽象資料型別的標準格式:
ADT 抽象資料型別名
Data
資料元素之間的邏輯關係定義
Operation
操作1
初始條件
操作結果描述
操作2
.....
操作n
......
endADT
複製程式碼