1. 程式人生 > >嚴蔚敏老師版《資料結構》筆記之基本概念和術語

嚴蔚敏老師版《資料結構》筆記之基本概念和術語

1. 什麼是資料結構

如果要寫好一個程式,必須分析待處理的物件的特性和物件之間的關係,這是“資料結構”形成和發展的背景。

“資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作等的學科”。

 

2. 基本概念和術語:

(1) 資料(data):在CS中是指所有能輸入到計算機中並被計算機程式處理的符號的總稱。

(2)資料元素(data element):是資料的基本單位,在計算機中通常作為整體考慮。

(3)資料項(data item):一個數據元素的最小單位,關係類似程序和執行緒。資料項不可分。

(4)資料物件(data object):性質相同的資料元素的集合,是資料的一個子集。

(5)資料結構:互相之間存在一種或多種特定關係的資料元素的集合。通常有四類基本結構:集合、線性結構、樹形結構。圖狀結構或網狀結構。

資料結構的數學定義: 

Data\ Structure=(D,S), D是資料元素的有限集,S是D上關係的有限集。

數學定義是將關係從文字抽象成為數學模型。在CS中,因為我們還要應用在程式上,所以需要思考資料結構在計算機中的表示(又稱映像),其被稱為資料的物理結構或儲存結構。它包括資料元素的表示和關係的表示。

(6)資料節點:用若干位組合形成的位串表示一個數據元素,通常這個位串為元素或結點(node)。元素或結點可以看成是資料元素在計算機中的映像。

(7)資料域(data field):當資料元素由若干資料項組成時,位串中對應於各個資料項的子位串稱為資料域。

(8)順序映像/非順序映像:資料元素之間的關係在計算機中有兩種不同的表示方法:順序和非順序映像。因此會得到兩種不同的儲存結構:順序儲存結構和鏈式儲存結構。

如下圖所示,表示複數z1=3.0-2.3j和z2=-0.7+4.8j。左邊順序結構很好理解,就是通過位置表示資料結構。高階程式語言中的一維陣列就可以來描述順序儲存結構。

右邊是鏈式儲存:非順序映像的特點是藉助指示元素儲存地址的指標表示資料元素之間的邏輯關係。其中實部與虛部的關係用“0415”,“0611”和“0613”表示。可以看到這樣很節省空間了。資料的邏輯結構和物理結構是密切相關的,直接影響了演算法的實現。C的指標就是鏈式儲存。

(9)資料型別:高階程式語言中的資料型別可分為兩類:非結構的源自型別和結構型別。

(10)抽象資料型別(abstract data type, ADT):是指一個數學模型以及定義在該模型上的一組操作。只要數學特性不變,都不影響外部使用。和資料型別的關係就像是java的string 物件和 object物件。

抽象資料型別可用以下三元組表示:

(D,S,P)(D,S,P)

其中,D是資料物件,S是D上的關係集,P是對D的基本操作集。本書定義:

ADT 抽象資料型別名{

資料物件:(資料物件的定義)

資料關係:(資料關係的定義)

基本操作:(基本操作的定義)

}ADT 抽象資料型別名

其中,資料物件和資料關係的定義用虛擬碼描述:

賦值引數只為操作提供輸入值;引用引數以&打頭。

(11)多型資料型別(polymorphic data type):值的成分不確定的資料型別(但是要能進行關係運算)。