數據結構緒論

  • 數據:對客觀事物的符號表示,能輸入到計算機中被計算機程序處理的符號的總稱
  • 數據元素:組成數據的基本單位。eg 小明的一組信息:年齡,名字,學號,身高
  • 數據項:數據元素是有若干數據項組成的,數據項是數據不可分割的最小單位 eg:小明的身高/年齡
  • 數據結構:有一種或多種特定關係的數據元素的集合。eg 小明和其班上的同學的統計信息表
    二元組,Data_Structure=(D,S),D是數據元素的集合,S是D上關係的集合。
    eg D={k1,k2,k3},S={(k1,k2),(k2,k3)}

上述數據結構的定義僅是對操作對象的一種數學描述。結構中的關係描述的是數據元素的邏輯關係,因此又稱爲數據的邏輯結構。然而,討論數據結構是爲了在計算機中實現對他的操作,因此還需研究如何在計算機中表示它。所以數據結構包含以下的三個方面。
在這裏插入圖片描述

  • 邏輯結構:指數據元素之間的關係。
  • 存儲結構:指數據元素和邏輯關係在計算機中的存儲映像和實現。包括數據元素的存儲表示數據元素之間關係的存儲表示
  • 數據的運算:就是施加於數據的操作,如查找、添加、修改、刪除等。在數據結構中運算不僅僅實加減乘除這些算術運算,它的範圍更爲廣泛,常常涉及算法問題。
    舉例:線性表的初始化、查找、插入、刪除操作等
  • 邏輯結構和存儲結構的關係:①存儲結構是邏輯結構用計算機語言的實現 ②邏輯結構是數據結構的抽象,存儲結構是數據結構的實現,二者結合起來建立了數據元素之間的結構關係。

那麼問題來了,到底怎樣描述存儲結構呢?
我們藉助高級程序語言的數據類型(抽象數據類型)來描述存儲結構
以c爲例在這裏插入圖片描述

  • 數據類型:一個值的集合+一組操作。 eg int型,其值型爲某個區間的整數,定義在其上的操作爲加減乘除取模等操作。
  • 抽象數據類型:一個數學模型+一組操作

那麼什麼是抽象數據類型呢?
抽象數據類型和數據類型本質上是一個概念。
如所有高級語言中都有"整型"數據類型,它們的實現方法可以各自不同,但對程序員而言,它們是"相同"的。程序員使用它們時僅需瞭解它們的數學特性,而不需要了解它們在語言中是如何實現的。換句話說,各種語言中實現的是同一個"整數類型",而這個"整數類"的定義僅對"整數的數學特性"有明確規定。可稱這個"整數類型"爲"抽象數據類型"。因此,抽象的意義在於數據類型的數學抽象特性。

  • 一個抽象數據模塊包括定義、表示、實現
  • 定義: 三元組(D,S,P)
    D是數據對象,S是D上的關係集,P是對D的基本操作集。
    ADT 抽象數據類型名{
    數據對象:
    數據關係:
    基本操作:
    操作名(參數表) 參數:賦值參數
    初始條件 : 引用參數(以&打頭,返回操作結果)
    操作結果:
    }ADT 抽象數據類型名
  • 表示、實現:通過處理器以存在的數據類型表示和實現
    以下用c代碼具體實現抽象數據類型的表示和實現,也是描述數據的存儲結構和數據的運算
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章