1.1 基本概念和術語
數據(Data) :是客觀事物的符號表示。
在計算機科學中指的是所有能輸入到計算機中並被計算機程序處理的符號的總稱。
數據對象(Data Object):是性質相同的數據元素的集合,是數據的一個子集。如字符集合C={‘A’,’B’,’C,…}
數據元素(Data Element) :是數據的基本單位,在程序中通常作為一個整體來進行考慮和處理。
一個數據元素可由若干個數據項(Data Item)組成。數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。
數據結構(Data Structure):是指相互之間具有(存在)一定聯系(關系)的數據元素的集合。元素之間的相互聯系(關系)稱為邏輯結構。數據元素之間的邏輯結構有四種基本類型,如圖1-3所示。
① 集合:結構中的數據元素除了“同屬於一個集合”外,沒有其它關系。
② 線性結構:結構中的數據元素之間存在一對一的關系。
③ 樹型結構:結構中的數據元素之間存在一對多的關系。
④ 圖狀結構或網狀結構:結構中的數據元素之間存在多對多的關系。
圖1-3 四類基本結構圖
1.2數據結構的形式定義
數據結構的形式定義是一個二元組: Data-Structure=(D,S)
其中:D是數據元素的有限集,S是D上關系的有限集。
例2:設數據邏輯結構B=(K,R) K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>,<k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 畫出這邏輯結構的圖示,並確定那些是起點,那些是終點
開始結點是指無前趨的結點這里滿足該定義的開始結點為k1k2。 終端結點是指無后續的結點這里滿足該定義的終端結點為k6k7。 該邏輯結構是非線性結構中的圖形結構。
數據元素之間的關系可以是元素之間代表某種含義的自然關系,也可以是為處理問題方便而人為定義的關系,這種自然或人為定義的 “關系”稱為數據元素之間的邏輯關系,相應的結構稱為邏輯結構。
1.3 數據結構的存儲方式
數據結構在計算機內存中的存儲包括數據元素的存儲和元素之間的關系的表示。
元素之間的關系在計算機中有兩種不同的表示方法:順序表示和非順序表示。
由此得出兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
順序存儲結構:用數據元素在存儲器中的相對位置來表示數據元素之間的邏輯結構(關系)。
鏈式存儲結構:在每一個數據元素中增加一個存放另一個元素地址的指針(pointer ),用該指針來表示數據元素之間的邏輯結構(關系)。
例:設有數據集合A={3.0,2.3,5.0,-8.5,11.0} ,兩種不同的存儲結構。
順序結構:數據元素存放的地址是連續的;
鏈式結構:數據元素存放的地址是否連續沒有要求。
數據的邏輯結構和物理結構是密不可分的兩個方面,一個算法的設計取決於所選定的邏輯結構,而算法的實現依賴於所采用的存儲結構。
在C語言中,用一維數組表示順序存儲結構;用結構體類型表示鏈式存儲結構。
數據結構的三個組成部分:
邏輯結構: 數據元素之間邏輯關系的描述 D_S=(D,S)
存儲結構: 數據元素在計算機中的存儲及其邏輯關系的表現稱為數據的存儲結構或物理結構。
數據操作: 對數據要進行的運算。 本課程中將要討論的三種邏輯結構及其采用的存儲結構如圖1-4所示。
1.4數據類型
數據類型(Data Type):指的是一個值的集合和定義在該值集上的一組操作的總稱。
數據類型是和數據結構密切相關的一個概念。 在C語言中數據類型有:基本類型和構造類型。
1.5數據結構的運算
數據結構的主要運算包括:
⑴ 建立(Create)一個數據結構;
⑵ 消除(Destroy)一個數據結構;
⑶ 從一個數據結構中刪除(Delete)一個數據元素;
⑷ 把一個數據元素插入(Insert)到一個數據結構中;
⑸ 對一個數據結構進行訪問(Access);
⑹ 對一個數據結構(中的數據元素)進行修改(Modify);
⑺ 對一個數據結構進行排序(Sort);
⑻ 對一個數據結構進行查找(Search)。