數據類型與邏輯結構


數據類型

  數據類型是與數據結構密切相關的一一個概念。它最早出現在高級程序設計語言中,用

  以刻畫程序中操作對象的特性。在用高級語言編寫的程序中,每個變量、常量或表達式都
有一個確定的數據類型。


  數據類型(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)邏輯結構與所含結點的個數無關。如不同的機構組成,樹狀結構中結點數不同;
而同一機構組成,增加或刪除幾個部門,其結果仍是樹狀結構。


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

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM