數據 數據結構 數據類型

野生碼農的計算機基礎探索之路。

一直不明白數據,數據結構,數據類型,這些在講什麼? 對概念和本質都沒有認知。在邏輯上、抽象上、物理上? 這幾個又是怎麼進行區分,又表示什麼?

  • 數據是信息的載體,是描述客觀事物的數、字符、以及所有能輸入到計算機中,被計算機程序識別和處理的符號的集合。數據的本質是差異,每一種差異是一個值。數據的意義是用來對比。包含:數值性數據非數值性數據

  • 數據結構

    是計算機科學與技術領域常用的術語。它用來反映一個數據的內部構成,即一個數據由哪些成分數據構成,以什麼方式構成,呈什麼結構。邏輯上的數據結構反映成分數據之間的邏輯關係,物理上的數據結構反映成分數據在計算機內的存儲安排。數據結構是數據存在的形式。

    • 數據結構,分為數據的邏輯結構和物理結構

      • 數據的邏輯結構:數據元素之間的邏輯關係 => 集合結構;線性結構;樹形結構;圖形結構

      • 數據的物理結構:數據元素在計算機存儲器中是如何存儲的 => 順序存儲(存放在連續的內存地址中);鏈式存儲(數據通過指針指向下一個存儲地址,不一定存儲在連續的地址空間)

  • 數據類型

    數據是按照數據結構分類的,具有相同數據結構的數據屬同一類。同一類數據的全體稱為數據類型。在程序設計高級語言中,數據類型用來說明一個數據在數據分類中的歸屬。它是數據的一種屬性。這個屬性限定了該數據的變化範圍。為了解題的需要,根據數據結構的種類,高級語言定義了一系列的數據類型。不同的高級語言所定義的數據類型不盡相同。

    • 數據類型是一個值的集合和定義在這個值上的一組操作的總稱。

    • 按照值的不同,高級程序設計語言中數據類型可分為兩類:一類是非結構的原子類型,另一類是結構類型。

  • 抽象數據類型

    抽象數據類型的含義可理解為數據類型的進一步抽象。即把數據類型和數據類型上的運算捆在一起,進行封裝。引入抽象數據類型的目的是把數據類型的表示和數據類型上運算的實現與這些數據類型和運算在程序中的引用隔開,使它們相互獨立。對於抽象數據類型的描述,除了必須描述它的數據結構外,還必須描述定義在它上面的運算(過程或函數)。抽象數據類型上定義的過程和函數以該抽象數據類型的數據所應具有的數據結構為基礎。

    • 抽象數據類型實際上就是對該數據結構的定義。因為它定義了一個數據的邏輯結構以及在此結構上的一組算法。

    • 抽象數據類型只是在數據的邏輯結構上討論問題,與數據的存儲結構無關。

整體的概念以 WIKI 上為準。

  • 抽象數據類型

    其中涉及 抽象數據結構, 數據結構的實現,數據的存儲結構, 數據的邏輯結構

參考:

計算機科學中有兩種常見的抽象:

  • procedural(functiona) abstraction: 過程抽象,指使用一個函數或方法而忽略它的具體實現。

  • data abstraction: 數據抽象,指數據類型的屬性(值和操作方法)與數據類型的具體實現分離。

常用術語定義

  • collection: 集合,指一組數據值,單個數據值之間沒有隱含的組織關係。

  • container: 容器,指存儲和組織一個集合的數據結構或 ADT。集合中的單個數據值稱為容器的元素 (element),當容器中沒有元素時,稱容器為空 (empty)。Python 中的容器例子有: string, tuple, list, dict, set。

  • sequence: 序列,是一種容器,該容器的元素按線性排列,並且每個元素能通過其位置訪問(即通過下標訪問)。Python 中的序列例子: string, tuple, list。

  • sorted sequence: 有序序列,元素的位置基於每個元素的前後元素的某種預定關係確定。

相關推薦

推薦中...