數(shù)據(jù)結構簡介
什么是數(shù)據(jù)結構
- 計算機存儲以及組織數(shù)據(jù)的方式
- 也可以理解為,有一堆數(shù)據(jù),他們之間有些特殊的關系.
常見的數(shù)據(jù)結構
- 線性表(數(shù)組 鏈表 棧 隊列)
- 樹
- 圖
邏輯結構
數(shù)據(jù)結構從邏輯上看,分為下面幾種結構:
-
集合結構
集合結構.png- 這種結構注意看,里面有很多元素,但是這些元素之間是沒有什么關系的 類似我們OC里面的NSSet NSMutableSet
-
線性結構
線性結構.png- 線性結構有什么特點呢?他們是有順序的.這種是不是見過,我們OC中的NSArray NSMutableArray都是線性結構的
-
樹狀結構
樹狀結構.png- 樹狀結構是一個或多個節(jié)點的有限集合。A為根節(jié)點,因為它最大! D是I&J的父節(jié)點.I和J他們是兄弟節(jié)點.
-
圖形結構
圖形結構.png- 圖形結構簡稱"圖",是一種相對復雜的數(shù)據(jù)結構.任意兩個節(jié)點之間都可以關聯(lián).
存儲結構
數(shù)據(jù)結構從邏輯上可以分為上面幾種,但是這些數(shù)據(jù)統(tǒng)統(tǒng)都是要存放到內(nèi)存里面去的,那么內(nèi)存中存放數(shù)據(jù)也有不一樣的結構.
-
順序存儲結構
順序存儲結構.png- 這組存儲單元內(nèi)存地址是連續(xù)的.
-
鏈式存儲結構
鏈式存儲結構.png- 這組存儲單元內(nèi)存地址可以是連續(xù)的,也可以是不連續(xù)的.它不要求邏輯上相鄰的元素在物理位置上也相鄰.
線性表
- 什么是線性表
- 線性表就是多個具有相同特性的數(shù)據(jù)元素(節(jié)點)組成的膘盖,有限而且有序的集合
- 當線性表的節(jié)點個數(shù)為0時校翔,我們稱之為空表
- 線性表第一個元素稱為首節(jié)點,最后一個元素稱為尾節(jié)點
- 比如某個線性表的元素a1 a2 a3 a4 ......a99 禽捆。那么a1...a98 都是a99的前驅来涨,a98是a99的直接前驅
- 比如某個線性表的元素a1 a2 a3 a4 ......a99 尽纽。那么a2...a98 都是a1的后繼它褪,a2是a1的直接后繼
- 線性表的順序存儲結構
- 用一組地址連續(xù)的存儲單元依次存儲線性表的數(shù)據(jù)元素
順序存儲結構.png
- 線性表的鏈式存儲結構
- 用一組任意的存儲單元存儲線性表中的數(shù)據(jù)元素俭驮,它的存儲單元可以是連續(xù)的,也可以是不連續(xù)的
鏈式存儲結構.png