學習計算機編程,經常會看到這個等式:程序=算法+數據結構。
算法是用來描述適合用計算機程序來實現的問題——解決方法。算法即便不是該領域大部分問題的中心研究對象,也是許多問題的核心研究對象。大部分算法的重點在於計算中涉及的數據的組織方法——數據結構,因此設計算法離不開數據結構,離開了數據結構的算法就是無本之木,無水之源。
數據結構劃分:
(1)按照邏輯結構劃分:集合(無邏輯關係)、線性結構和非線性結構。
其中線性結構表示:數據元素之間存在着“一對一”的線性關係的數據結構。
非線性結構表示:相較於線性結構,非線性結構的一個結點元素可能對應多個直接前驅和多個後繼。
(2)按照存儲結構劃分:順序存儲結構、鏈式存儲結構、索引存儲結構和散列存儲結構。
其中順序存儲結構是指把數據元素放在地址連續的存儲單元裏,其數據間的邏輯關係和物理關係是一致的。
鏈式存儲結構是指數據元素放在任意的存儲單元中,存儲單元可以是連續的,也可以是不連續的。
索引存儲結構是在存儲結點數據的同時,還建立附加的索引表,通過結點的索引號來確定結點存儲地址。
散列存儲結構,又稱hash存儲,是根據結點的關鍵字計算出該結點的存儲地址的。散列存儲是一種從關鍵字到地址碼的存儲映射方法。