數據結構是相互之間存在一種或多種特定關係的數據元素集合。這個描述是一種非常簡單的解釋。數據元素間的相互關係具體應包括三個方面:數據的邏輯結構、數據的存儲結構和數據的運算集合。
1.邏輯結構
數據的邏輯結構是指數據元素之間邏輯關係描述。
數據結構的形式定義爲:數據結構是一個二元組
Data_Structure(D,R)
其中,D是數據元素的有限集,R是D上關係的有限集。
例如:
DS2=(D2,R2)
D2={a,b,c,d,e,f}
R2={T}
T={<a,b>,<a,c>,<a,d>,<c,e>,<c,f>}
則其邏輯結構圖爲一棵樹
根據數據元素之間關係的不同特性,通常有下列四類基本結構
(1)集合結構:結構中的數據元素之間除了同屬於一個集合的關係外,無任何其他關係。
(2)線性結構:結構中的數據元素之間存在着一對一的線性關係。
(3)樹狀結構:結構中的數據元素之間存在着一對多的層次關係。
(4)圖狀結構或網狀結構:結構中的數據元素之間存在着多對多的任意關係。
由於集合中關係只有屬於或不屬於這種簡單的屬於關係,可以用其他的結構代替它,故數據的四類基本邏輯結構可概括如下:
邏輯結構--線性結構——線性表,棧,隊,字符串,數組,廣義表
邏輯結構--非線性結構——樹,圖
2.存儲結構
存儲結構(又稱物理結構)是邏輯結構在計算機中的存儲映像,包括數據元素映像和關係映像,它是邏輯結構在計算機中的實現,它包括數據元素的表示和關係的表示。
形式化描述:對於一種數據結構(D,R),要將D存入計算機中,建立一種從D的數據元素到存儲空間M單元的映像S,即D--M,也就是說對於每一個d,d屬於D,都有唯一的z∈M使S(D)=Z,同時這個映像必須明顯或隱含地體現關係R。
邏輯結構與存儲結構的關係爲:存儲結構是邏輯關係的映像與元素本身的映像。邏輯結構是數據結構的抽象,存儲結構是數據結構的實現,兩者綜合起來建立了數據元素之間的結構關係。
數據元素之間的關係在計算機中有兩種不同的表示方式:
·順序映像(順序存儲結構)
·非順序映像(非順序存儲結構)
關係映像在計算機中可用順序存儲結構或非順序存儲結構這兩種不同表示方式來存放。邏輯結構在計算機存儲器中實現時,可採用不同的存儲器來存儲,不論是在內存或外存中存儲,都要以反映邏輯關係爲原則。
3.運算集合
討論數據結構的目的是爲了在計算機中實現操作,因此在結構上的運算集合是很重要的部分。數據結構就是研究一類數據的表示及其相關的運算操作。
如工資表中,採用了線性表的邏輯結構,因爲結點與結點之間是一種簡單的線性關係;由於工資表可能包括幾千名職工信息,可採用順序結構存放,也可以採用非順序結構存放。怎麼存放就是具體的存儲結構問題了。對於工資表,當職工調離時要刪除相應的數據元素,調進時要增加數據元素,調整工資時要修改數據元素。這裏的增,刪,改就是數據的操作集合。
綜上所述,數據結構的內容可歸納爲三個部分:邏輯結構、存儲結構和運算集合。按某種邏輯關係組織起來的一批數據,按一定的映像方式存放在計算機的存儲器中,並在這些數據上定義一個運算的集合,這些是數據結構的基本內容。
數據結構主要研究怎樣合理地組織數據、建立合適的結構、提高執行程序所用的時空效率。