資料結構中的基本概念
相關概念
我們給出以下例子:
- 資料(data)是對客觀事物的符號表示,在電腦科學中是指所有能輸入到計算機中並被計算機程式處理的符號的總稱。資料包括文字、表格、影象等。
資料的基本單位是資料元素(data element)(C語言中的結構體、結點、記錄等),通常把資料元素作為一個整體進行處理。例如,超市商品表單。
資料物件(data object)是具有相同型別的資料元素的集合,因為所有資料元素型別相同時處理起來更加方便,所以在資料結構中,除特別指定外,資料通常都是資料物件 。
有些資料元素是由若干個資料項(也可稱為欄位、域、屬 性)組成。
資料項是資料的不可分割的最小單位。
例如在1~10的整數資料中,任意一個數據就是一個數據元素。字元資料A~Z。
資料結構的概念
資料結構(data structure)是相互之間存在一種或多種特定關係的資料元素的集合。這些資料元素不是孤立存在的,而是有著某種關係,這種關係構成了某種結構。
資料結構 = 資料 + 結構
- 在資料結構中主要討論資料元素之間的相鄰關係
三個方面
-
邏輯結構:資料元素之間的邏輯關係的整體。它是資料結構在使用者面前呈現的形式。
-
儲存結構:資料元素及其關係在計算機儲存器中的儲存方式,也稱為資料的物理結構。
-
運算:施加在該資料上的操作。
- 舉例:
如下所示的為一個學生成績表Score,它由多個學生成績記錄(即資料元素)組成,每個元素又包括多個數據項。要求計算所有學生的平均分。
邏輯結構
資料元素之間的邏輯關係的整體稱為資料的邏輯結構,這裡的邏輯關係主要指資料元素之間的相鄰關係。
根據資料元素之間邏輯關係的不同,分為如下下列4類基本結構。
-
集合:包含的所有資料元素同屬於一個集合(最鬆散的關係)
-
線性結構:包含的資料元素之間存在一對一的關係。
-
樹形結構:包含的資料元素之間存在一對多的關係。
-
圖形結構:包含的資料元素之間存在多對多的關係。也稱為網狀結構
- 線性結構
- 樹形結構
- 圖結構
資料的邏輯結構可以採用二元組方式進行描述。 二元組表示如下:
- \(D\)是資料元素的有限集合,即\(D\)是由有限個數據元素(簡稱為元素)所構成的集合。
- \(R\)是\(D\)上的關係的有限集合,即R是由有限個關係\(r_{j}(1≤j≤m)\)所構成的集合。
- \(r_{j}\)是指從\(D→D\)的關係。
總結
資料結構大致包含以下幾種儲存結構:
-
線性表,還可細分為順序表、連結串列、棧和佇列;
-
樹結構,包括普通樹,二叉樹,線索二叉樹等;
-
圖儲存結構;
線性表
線性表並不是一種具體的儲存結構,它包含順序儲存結構和鏈式儲存結構,是順序表和連結串列的統稱。
順序表
順序表,簡單地理解,就是常用的陣列,只是換了個名字而已,例如使用順序表儲存 {1,3,5,7,9}
由於順序表結構的底層實現藉助的就是陣列,因此對於初學者來說,可以把順序表完全等價為陣列,但實則不是這樣。資料結構是研究資料儲存方式的一門學科,它囊括的都是各種儲存結構,而陣列只是各種程式語言中的基本資料型別,並不屬於資料結構的範疇。
連結串列
使用順序表(底層實現靠陣列)時,需要提前申請一定大小的儲存空間,這塊儲存空間的實體地址是連續的,連結串列則完全不同,使用連結串列儲存資料時,是隨用隨申請,因此資料的儲存位置是相互分離的,換句話說,資料的儲存位置是隨機的。
為了給各個資料塊建立“依次排列”的關係,連結串列給各資料塊增設一個指標,每個資料塊的指標都指向下一個資料塊(最後一個數據塊的指標指向 NULL),就如同一個個小學生都伸手去拉住下一個小學生的手,這樣,看似毫無關係的資料塊就建立了“依次排列”的關係,也就形成了連結串列
棧和佇列
棧
棧和佇列隸屬於線性表,是特殊的線性表,因為它們對線性表中元素的進出做了明確的要求。
棧中的元素只能從線性表的一端進出(另一端封死),且要遵循“先入後出”的原則,即先進棧的元素後出棧。
棧結構如圖所示,像一個木桶,棧中含有 3 個元素,分別是 A、B 和 C,從在棧中的狀態可以看出 A 最先進的棧,然後 B 進棧,最後 C 進棧。根據“先進後出”的原則,3 個元素出棧的順序應該是:C 最先出棧,然後 B 出棧,最後才是 A 出棧。
佇列
佇列中的元素只能從線性表的一端進,從另一端出,且要遵循“先入先出”的特點,即先進佇列的元素也要先出佇列。
佇列結構如圖所示,佇列中有 3 個元素,分別是 A、B 和 C,從在佇列中的狀態可以看出是 A 先進佇列,然後 B 進,最後 C 進。根據“先進先出”的原則,3 個元素出佇列的順序應該是 A 最先出佇列,然後 B 出,最後 C 出。
樹儲存結構
樹儲存結構適合儲存具有“一對多”關係的資料。
如圖所示,其中張平只有一個父親,但他卻有兩(多)個孩子,這就是“一對多”的關係,滿足這種關係的資料可以使用樹儲存結構。
圖儲存結構
圖儲存結構適合儲存具有“多對多”關係的資料。
如圖所示,從 V1 可以到達 V2、V3、V4,同樣,從 V2、V3、V4 也可以到達 V1,這就是“多對多”的關係,滿足這種關係的資料可以使用圖儲存結構。