一、常用的數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)分為8類有:數(shù)組、棧、隊列、鏈表、樹、散列表、堆、圖。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成 。?
1、數(shù)組
數(shù)組是可以再內(nèi)存中連續(xù)存儲多個元素的結(jié)構(gòu),在內(nèi)存中的分配也是連續(xù)的,數(shù)組中的元素通過數(shù)組下標(biāo)進(jìn)行訪問,數(shù)組下標(biāo)從0開始。例如下面這段代碼就是將數(shù)組的名列前茅個元素賦值為 1。
2、棧
棧是一種特殊的線性表,僅能在線性表的一端操作,棧頂允許操作,棧底不允許操作。 棧的特點是:先進(jìn)后出,或者說是后進(jìn)先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。??
3、隊列
隊列與棧一樣,也是一種線性表,不同的是,隊列可以在一端添加元素,在另一端取出元素,也就是:先進(jìn)先出。從一端放入元素的操作稱為入隊,取出元素為出隊。
4、鏈表
鏈表是物理存儲單元上非連續(xù)的、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表的指針地址實現(xiàn),每個元素包含兩個結(jié)點,一個是存儲元素的數(shù)據(jù)域 (內(nèi)存空間),另一個是指向下一個結(jié)點地址的指針域。根據(jù)指針的指向,鏈表能形成不同的結(jié)構(gòu),例如單鏈表,雙向鏈表,循環(huán)鏈表等。?
5、樹
樹是一種數(shù)據(jù)結(jié)構(gòu),它是由n(n>=1)個有限節(jié)點組成一個具有層次關(guān)系的集合。把它叫做 “樹” 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。
6、散列表
散列表,也叫哈希表,是根據(jù)關(guān)鍵碼和值 (key和value) 直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu),通過key和value來映射到集合中的一個位置,這樣就可以很快找到集合中的對應(yīng)元素。
7、堆
堆是一種比較特殊的數(shù)據(jù)結(jié)構(gòu),可以被看做一棵樹的數(shù)組對象,具有以下的性質(zhì):堆中某個節(jié)點的值總是不大于或不小于其父節(jié)點的值;堆總是一棵完全二叉樹。將根節(jié)點最大的堆叫做最大堆或大根堆,根節(jié)點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。
8、圖
圖是由結(jié)點的有窮集合V和邊的集合E組成。其中,為了與樹形結(jié)構(gòu)加以區(qū)別,在圖結(jié)構(gòu)中常常將結(jié)點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關(guān)系。
延伸閱讀:
二、數(shù)據(jù)元素的機(jī)內(nèi)表示
數(shù)據(jù)元素的機(jī)內(nèi)表示(映像方法): 用二進(jìn)制位(bit)的位串表示數(shù)據(jù)元素。通常稱這種位串為節(jié)點(node)。當(dāng)數(shù)據(jù)元素有若干個數(shù)據(jù)項組成時,位串中與個數(shù)據(jù)項對應(yīng)的子位串稱為數(shù)據(jù)域(data field)。因此,節(jié)點是數(shù)據(jù)元素的機(jī)內(nèi)表示(或機(jī)內(nèi)映像)。