數據結構小白系列之數據結構概述

更多文章,歡迎關注微信公衆號:深夜程猿


什麼是數據結構

數據結構,是數據的組織形式, 包括數據元素自己以及數據元素之間的關係,公式可表示爲Data_Structure={D, R},其中D表示數據,R表示關係。 數據結構具備邏輯結構和物理結構

邏輯結構

邏輯結構是數據和數據之間的邏輯關係,實際就是它們之間的位置關係。好比數據A和數據B,數據A和數據B是相鄰着存儲着,數據A存儲在數據B前面。這樣數據A數據B的邏輯關係就是相鄰的而且A在B前面。(可是實際的存儲A和B並不必定是物理連續的,由於相同的邏輯結構能夠有不一樣的物理結構存儲數據)。

數據的邏輯結構分類:node

  • 集合關係:數據結構中的元素都屬於同一個數據集合
  • 線性關係:數據結構中的元素存在一對一的相互關係,好比上面說的A元素後面是B元素
  • 樹形關係:數據結構中的元素存在一對多關係。好比在數據A前面是數據C,後面是數據B,那麼數據A和數據B、C就是一對多的關係
  • 圖形關係:數據結構中的元素存在多對多的關係。好比數據A後面是數據B,數據A前面是數據C,數據C前面是數據B,那麼數據A、B、C就是多對多關係

下面一張圖表示數據的邏輯結構:算法


物理結構

物理結構是數據在真實磁盤空間上的存儲方式,是數據的具體存儲方式。一個邏輯結構能夠有不一樣存儲方式,也就是一個邏輯結構對應多種物理結構。好比邏輯結構相鄰的數據,在物理結構上能夠是相鄰的(數組存儲),也能夠是不相鄰的(鏈表存儲,經過一種叫作指針的東西鏈接起來)。下面是百度百科的解釋:

「數據的物理結構是數據結構在計算機中的表示(又稱映像),它包括數據元素的機內表示和關係的機內表示。因爲具體實現的方法有順序、連接、索引、散列等多種,因此,一種數據結構(這裏是指邏輯結構)可表示成一種或多種存儲結構。
編程

數據元素的機內表示(映像方法): 用二進制位(bit)的位串表示數據元素。一般稱這種位串爲節點(node)。當數據元素有若干個數據項組成時,位串中與個數據項對應的子位串稱爲數據域(data field)。所以,節點是數據元素的機內表示(或機內映像)。

關係的機內表示(映像方法):數據元素之間的關係的機內表示能夠分爲順序映像和非順序映像,經常使用兩種存儲結構:順序存儲結構和鏈式存儲結構。順序映像藉助元素在存儲器中的相對位置來表示數據元素之間的邏輯關係。非順序映像藉助指示元素存儲位置的指針(pointer)來表示數據元素之間的邏輯關係。」數組

物理結構存儲方式:微信

  • 順序存儲
  • 鏈式存儲
  • 索引存儲
  • 散列存儲

數據結構的分類

數據結構有如下幾種分類,不瞭解的讀者只需對名稱有個印象便可
  • 集合結構
  • 線性結構:線性表
  • 樹形結構:樹
  • 圖形結構:圖

小結

數據結構分爲邏輯結構和物理結構,邏輯結構描述的是數據的邏輯關係,好比是相鄰的仍是不相鄰的。物理結構是數據在計算機系統的具體存儲形式。一種邏輯結構能夠有不一樣的物理結構實現。

在計算機中,數據採起不一樣的物理結構存儲,須要計算機硬件的支持。數據結構

有一句話說,算法+數據結構=程序。這句話是否誇大咱們不進行討論,可是數據結構在咱們的程序中起到了很是重要的做用。一個良好的數據結構,可使得咱們的程序更加高效運行,數據存儲更加有效。

咱們能夠這樣理解(但不嚴謹),算法解釋了程序如何運行,何時作什麼都已經定義好了,而數據結構規定了程序的數據如何組織。

什麼是程序?程序就是咱們使用編程語言編寫的源代碼文件。
相關文章
相關標籤/搜索