IOS中的數據結構的概念(1)
一 數據(類)
描述現實世界事物的符號,在計算機中就是我們常用的對象嘍,例如NSObject 、UIImageView、 Int、自定義的任何類對象都是數據。
特點:
- 可以輸入到計算機中。
- 能被我們編寫的程序處理。
數據元素(對象)
組成數據的單位 例如男人、女人是人類的數據元素;跑車、三輪車、電瓶車,自行車是車類的數據元素。
數據項(屬性)
組成數據元素的單位
數據對象
性質相同的數據元素集合,數據的子集 (屬性相同的對象集合)簡稱“數據”
性質:
- 換成oc就是屬性
數據結構
結構 == 關係
- 不同的數據元素(對象)之間存在特定的關係 這個關係就是結構
數據結構
- 相互間存在一種或者多種的特定關係的 數據元素(對象)的集合
邏輯結構
數據元素(對象)間的相互關係
集合結構
- 集合H : {對象(數據元素)a,對象b,對象c,對象d…..}
- a,b,c,d除了同屬於H集合,他們之間不再有其他關係
線性結構
線性結構中的數據元素(對象)是一對一的關係
比如 a—b—c—d
樹形結構
- 數據元素(對象)間 一對多的關係
圖形結構
- 多對對的關係
- 有方向 用個箭頭表示
物理結構
計算機中的存儲形式
順序存儲結構(數組)
- 把數據元素(對象)放在 地址連續的存儲單元裏。
- 數據間的 邏輯關係 和物理 關係是一致的。
想一想:NSArray 爲什麼不能插入 和 修改 單元元素
- 在內存中分配一段固定的地址連續的存儲單元。
- 這個固定的存儲空間不可改變,如果可以修改,那麼在磁盤上的每一個數據所佔位置都要移動,或者增加和減少這會消耗性能,是不合理的。
鏈式存儲結構:
- 將數據元素(對象)放在 任意的存儲單元,可以是連續的也可以是不連續的
- 前一個元素的末尾有一個存放地址的空間,來存放下一個元素的地址。
- 再想一想NSMutableArray
- 在內存中隨意分配地址存儲單元
- a,b中間插入元素c,對已分配的存儲地址沒有任何影響,只需要將a元素末尾指針指向c,c末尾的指針指向b,這樣他們就聯繫起來了。對性能幾乎沒有消耗,因爲沒有動內存地址!
數據類型
數據類型 按照各自的取值範圍來劃分 ,比如int double 都有各自的取值範圍和各自所能進行的操作
原子類型
- 不可再分化的基本類型
- int
- double
- char等
結構類型
- 比如整形數組裝的 若干個int型的數據
抽象數據類型
- NSData
- Type
- 比如自己定義 的枚舉,每一個枚舉值其實是數值,我們把它抽象出來代表一個種類
- CGRect
- 位置和大小 由座標和寬高來代表,抽象出來一個x,y,w,h
- CGPoint
- 抽象 出橫座標和縱座標組成一個集合(x,y)