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

順序存儲結(jié)構(gòu).png
- 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)
- 用一組任意的存儲單元存儲線性表中的數(shù)據(jù)元素,它的存儲單元可以是連續(xù)的,也可以是不連續(xù)的

鏈?zhǔn)酱鎯Y(jié)構(gòu).png





