1. 程式人生 > 其它 >資料型別與邏輯結構

資料型別與邏輯結構

資料型別

  資料型別是與資料結構密切相關的一一個概念。它最早出現在高階程式設計語言中,用

  以刻畫程式中操作物件的特性。在用高階語言編寫的程式中,每個變數、常量或表示式都
有一個確定的資料型別。


  資料型別(Data Type)是具有相同性質的計算機資料的集合及在這個資料集合上的一
組操作的總稱,它顯式或隱式地規定了資料的取值範圍和操作特性。例如,C/C++語言中
的無符號字元型(unsigned char)代表閉區間[0, 255]中的整數,在這個整數集中可以進行
加、減、乘、整除、取模等操作。


  資料型別可以分為原子型別結構型別(或稱匯出型別、複合型別)。原子型別的值
是不可分解的,它由計算機語言提供,如C/C++語言中的整型、字元型等;結構型別的值


是可分解的,即由若干成分組成,並且這些成分本身還可以是結構的。結構型別要借用計
算機語言提供的資料組織機制,由使用者自己定義,如C/C++語言中的結構、陣列等。


  抽象資料型別(Abstract Data Type,ADT) 是指一個數學模型以及定義在該模型上的一
組操作的總稱。“抽象”的含義是指其邏輯特徵與具體的軟硬體實現(即計算機內部的表示
和實現)無關。在使用者看來,無論怎樣實現,只要其數學特徵不變,就不影響其外部使用。
抽象資料型別和資料型別實質上是-一個概念。例如,各種計算機都擁有的整數型別就
是一個抽象資料型別,在使用者看來其數學特徵相同,而實際上它們在不同處理器上的實現
是可以不同的。但另一方面,抽象資料型別的範疇更廣,它不侷限於在各種處理器中已定


義並實現的資料型別,還包括使用者自己定義的資料型別。


  在定義抽象資料型別時,將- -組 資料和施加於這些資料上的一-組操作封裝在- -起, 用
戶程式只能通過在ADT裡定義的某些操作來訪問其中的資料,從而實現了資訊的隱藏。
在這個過程中,資料的表示及其操作的細節在模組的內部給出,在模組的外部使用的只是
獨立於具體實現的抽象的資料及抽象的操作。所以,抽象資料型別的特徵是使用與實現相
分離,實行封裝和資訊隱藏。

邏輯結構

  為了表示資料間的關係,需要引入邏輯結構的概念。

  資料元素對應著客觀世界中的實體,資料元素之間必然存在著各種各樣的關係,這種
資料元素之間的關係就稱為結構。其中,資料元素之間的關聯方式(或稱鄰接關係)稱做


資料的邏輯關係,資料元素之間邏輯關係的整體稱為邏輯結構(Logical Structure)


  為了討論方便,資料的邏輯結構- -般可用示意圖表示。具體方法為,用小圓圈代表數
據元素,用小圓圈之間的連線代表資料元素間的關係,如果強調關係的方向性,可用帶箭
頭的線段表示關係。有四類基本的邏輯結構,如圖所示。

  (1)集合:任何兩點之間不考慮鄰接關係或沒有鄰接關係,或稱做沒有關係的關係,
其資料組織形式鬆散,元素之間是“平等”的,它們的共同關係是“屬於同一個集合”。也
可以說,集合中各元素之間除了“同屬於-一個集合”的關係外,別無其他關係。


  (2)線性結構:有且僅有一個開始結點和一-個終端結點,並且任何結點都最多隻有一
個直接前趨和-一個 直接後繼。某點的直接前趨(Immediate Predecessor)是指與之相鄰且在
它前面的結點,直接後繼(Immediate Successor) 是指與之相鄰且在其後的結點。開始結
點沒有前趨,終端結點沒有後繼。線性結構中資料元素之間存在一一個對一 -個的關係。


  (3)樹狀結構:除一個特殊元素(根)外,每個元素都只有一一個直接前趨,但可有多
個直接後繼,結點之間具有分支、層次特性。樹狀結構中資料元素之間存在一一個對多個的
關係。


  (4)圖狀結構:任何兩點之間都可能鄰接,結點之間形成網狀結構。任- -元素都可有
多個直接前趨和多個直接後繼,元素之間存在多個對多個的關係。


  線性結構是-種最常見的資料結構,本書第2章、第3章介紹的線性表、棧、佇列、
串等均為線性結構。樹狀結構與圖狀結構也稱為非線性結構,它的邏輯特徵是-一個結點可
能有多個直接前趨或多個直接後繼。集合比較特殊,可把它歸到非線性結構,因為“線性”
之外都是“非線性”,但在實際使用時,也經常對其資料元素增加某種“線性”關係,如出
現的先後次序等,按線性結構處理(當然也可根據需要施加某種“非線性”關係,如分支、
層次關係等,按相應的非線性結構處理)。


  有一些資料結構,如多維陣列和廣義表,儘管本質上屬於圖狀結構,但由於自身的具
體特點,與圖狀結構的處理方法有很大不同,所以一般單獨討論。


關於邏輯結構,有以下幾點需要特別注意:
  (1)邏輯結構與資料本身的形式、內容無關。如機構組成、族譜管理等問題涉及的數
據,其形式、內容完全不同,但都是樹狀結構;而同一- 問題,改變某個元素的名稱或內容,
邏輯結構並不受影響。


  (2)邏輯結構與資料元素的相對位置無關。如機構組成中,進行部門關係重組,這時.

結點間的相對位置可能改變,但整體上仍是樹狀結構。


  (3)邏輯結構與所含結點的個數無關。如不同的機構組成,樹狀結構中結點數不同;
而同一機構組成,增加或刪除幾個部門,其結果仍是樹狀結構。


  由此可見,一些表面上很不相同的資料可以有相同的邏輯結構,因此,邏輯結構是數
據組織的某種“本質性”的東西。事實上,邏輯結構是資料組織的主要方面。

  在不至於混淆的情況下,本書以後常常將直接前趨簡稱為前趨、直接後繼簡稱為後繼。

本文來自部落格園,作者:Colin_Cora,轉載請註明原文連結:https://www.cnblogs.com/Colincora/p/15449183.html