一、基本概念
1. 數據結構 + 算法 = 程序
程序設計的實質是對確定問題選擇一種好的結構,加上設計一種好的算法。
2. 數據
定義
可描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,並輸入給計算機處理的符號集合。
特性
-
可以輸入到計算機中。
-
能夠被計算機程序處理。
對於整數、浮點數等數值型類型,可以直接進行數值
計算。
對於字符數據,需要進行非數值
的處理。譬如聲音、圖像、視頻數據可以先通過編碼手段變成字符數據
,再進行處理。
3. 數據元素
定義
數據元素就是組成數據的、有一定意義的基本單位
,在計算中通常作爲一個整體處理。也稱作記錄
。
譬如禽類數據,數據元素就是雞、鴨、魚、羊等。
4. 數據項
定義
一個數據元素可由若干個數據項組成,比如人這樣的數據元素可以有眼、鼻、口這樣的數據項。
數據項是數據不可分割的最小單位
。
5. 數據對象
定義
性質相同的數據元素的集合,是數據的子集。
性質相同指的是數據元素具有相同數量和類型的數據項,比如人都有性別、身高、體重等相同的數據項。
6. 數據結構
定義
結構,簡單理解就是關係
。
數據元素之間不是獨立的,而是存在特定關係的,這種關係稱之爲結構
。
數據結構:是相互之間存在一種或多種特定關係的數據元素的集合。
二、邏輯結構與物理結構
上文提到了數據元素之間存在着特定的關係,按照視點的不同,我們把數據結構分爲邏輯結構和物理結構。
1. 邏輯結構
定義
數據對象中數據元素之間的相互關係。
-
集合結構:數據元素間的關係是“屬於同一個集合”。
-
線性結構:數據元素之間存在着一對一的關係(如學生信息表) 。
-
樹形結構:數據元素之間存在着一對多的關係(如阻止架構、目錄系統) 。
-
圖形結構:數據元素之間存在着多對多的關係(如社會關係網、地圖) 。
總結
邏輯結構是針對具體問題的
,
是爲了解決某個問題,選擇了一種合適的數據結構來表示數據元素之間的邏輯關係。
2. 物理結構(存儲結構)
定義
數據的邏輯結構在計算機中的存儲形式
,實際上就是如何把數據元素存儲到計算機的存儲器中。
數據的存儲結構,應正確反映數據元素之間的邏輯關係。
物理結構有兩種形式:順序存儲結構
和鏈式存儲結構
。
順序存儲結構
把數據元素存放在地址連續的存儲單元
裏,其數據間的邏輯關係和物理關係是一致的。
說白了,就是大家按順序排隊站好,誰也別插隊。
然而,實際上總有人會插隊,也會有人要上廁所、有人會放棄排隊,於是便需要另一種物理結構了。
鏈式存儲結構
與順序存儲結構不同,鏈式存儲不需要大家按順序站好排隊。
先領一個號,等着叫號。期間去哪兒都沒關係,只要及時回來。需要關注的僅僅是前一個號有沒有被叫,前一個被叫,下一個就輪到自己了。
數據元素之間的物理位置不能反映其邏輯關係,指針字段來存放下一個數據元素所在的位置,用指針來反映數據元素之間的邏輯關係。
定義
把數據元素存放在任意的存儲單元
中,這組存儲單元可以連續也可以不連續。
數據元素之間的物理位置不能反映其邏輯關係
,指針字段
來存放下一個
數據元素所在的位置,用指針來反映數據元素之間的邏輯關係。
總結
邏輯結構是面向問題的,邏輯結構是面對計算機的,其基本目標就是將數據及其邏輯關係存儲到計算機的內存中。
三、數據類型
定義
指一組性質相同
的值的集合及定義在此集合上的一些操作
的總稱。
在高級編程語言中,每個常量、變量都有各自的取值範圍。
而類型,就是用來說明取值範圍和所能進行的操作。
分類
原子類型:不可再分解
的基本類型,包括整數型、字符串型、浮點型等。
結構類型:由若干個基本類型組合而成,可以進行再分解
。譬如整型數組是由若干整型數據組成的。
舉例
比如在C語言中聲明int a, b,
這就意味着在給變量a和變量b賦值時不能超出int的取值範圍
,
變量a和變量b之間的運算只能是int類型所允許的運算
。
抽象數據類型
定義
指一個數學模型
及定義在該模型上的一組操作
。
簡單來說:一個數據對象、數據對象中各數據元素之間的關係及對數據元素的操作。
舉例
各個計算機,不論是大型機、PC、平板,甚至是手機都擁有“整數”類型,也需要整數間的運算,那麼整型其實就是一個抽象數據類型。
儘管它在上面所提到的機器中的實現方法上可能實現上不一樣,但由於其定義的數學特性相同,所以在編程人員看來它們都是相同的。
“抽象”的意義在於數據類型的數學抽象特性。
一組操作
就好像“超級瑪麗”一樣,裏面的主角馬里奧有幾種基本操作:走(前進、後退、上、下)、跳、打子彈。
文中內容主要是對《大話數據結構》一書內容的摘抄,版權歸原作者----程傑
所有。
如有侵權,請聯繫我進行刪除。