數據結構是指由若干數據成分按照一定方式構成的符合數據以及作用於其上的函數或運算。
數據成分及其間的數據約束關係合稱爲數據結構的邏輯結構。
有些人也認爲數據結構應由數據的邏輯結構、數據的存儲結構及其運算(操作:查找、刪除、遍歷等)三部分組成。
1.1數據的邏輯結構
一個邏輯結構可行式定義爲一個二元組L=(N,R)。其中N是節點的有限集合,R是定義在集合N上的二元關係r的集合。
設L=(N,R)是一個邏輯結構。R是與線性關係、樹結構、二叉樹結構對應的一種關係。
數據的邏輯結構可分爲兩大類:
(1)線性結構
特點:若線性結構的結點數爲1,則該結點既是始結點又是終結點;
若線性結構的結點數大於等於2,則有且僅有一個始結點和一個終結點,始結點有一個後繼結點,終結點有一個前驅結點,中間結點(非始結點和終結點)有且僅有一個前驅結點和一個後繼結點。
線性關係也稱爲前後關係、大小關係。
(2)非線性結構
特點:結構中的結點可能有多個前驅結點和多個後繼結點。
樹和圖是兩種主要的非線性結構。
樹中有且僅有一個沒有前驅結點的結點,稱爲根結點。其他結點都僅有一個前驅結點,但允許有多個後繼結點,從根結點到任一非根結點,有且僅有一條路徑。樹中的關係r也稱爲層次關係、父子關係等。
圖中任意結點的前驅和後繼結點的個數可以是0個或者多個。圖中的關係也稱爲相鄰關係。
1.2 數據的存儲結構--存儲方式
一般,基本存儲映射方式有順序、鏈接、索引和散列四種。
1.順序存儲
順序存儲將一組結點存放在地址相鄰的存儲單元內,結點間的邏輯關係有連續存儲單元的自然順序關係來表達,即用一塊無空隙的存儲區域存儲結點數據。
2.鏈接存儲
鏈接存儲通過在結點的存儲結構中附加指針字段來存儲結點間的邏輯關係。
數據結點一般由數據字段和指針字段兩部分組成,數據字段存放結點本身的數據,指針字段存放指向後繼結點的指針。
鏈接存儲靈活性很大,適用於那些需要經常動態變化(插入、刪除等)的數據結構。
3.索引存儲(數據庫)
通過定義一個由整數域Z映射到存儲地址域的函數,把整數索引值映射到結點的存儲地址,從而形成一個存儲一串指針的索引表。