人的數據結構可以分為哪幾部分?
1、邏輯結構:是指數據對象中數據元素之間的相互關系。邏輯結構分為以下四種:
①、集合結構:集合結構中的數據元素除了屬于同一個集合外,它們之間沒有其他關系。各個數據元素是“平等”的,它們的共同屬性是“同屬于同一個集合”。
②、線性結構:線性結構中的數據元素是一對一的關系。
③、樹形結構:樹形結構中的數據元素存在著一種一對多的層次關系。
④、圖形結構:圖形結構的數據元素是多對多的關系。
注意:在圖形結構中,我們在表示數據的邏輯結構時,要注意以下兩點:
a、將每一個數據元素看做一個結點,用圓圈表示。
b、元素之間的邏輯關系用結點之間的連線表示,如果這個關系是有方向的,用帶箭頭的連線表示。
2/3
2、物理結構(也叫存儲結構):是指數據的邏輯結構在計算機中的存儲形式。
解析:數據是數據元素的集合,那么根據物理結構的定義,實際上就是如何把數據元素存儲到計算機中的存儲器中。存儲器主要是針對內存而言的,像硬盤、軟盤、光盤等外部存儲器的數據組織通常用文件結構來描述。
數據的存儲結構應正確反映數據元素之間的邏輯關系,數據元素的存儲結構形式有兩種:順序存儲和鏈式存儲。
(1)、順序存儲結構:是把數據元素放在地址連續的存儲單元里,其數據間的邏輯關系和物理關系是一致的。
解析:其實說白了這種存儲結構很簡單,就是排隊占位。大家都按順序呢排好,每個人占一段空間,大家誰也別插誰的隊。我們在學計算機語言時,數組就是順序存儲結構。當你告訴計算機,你要建立一個有9個整型數據的數組時,計算機就在內存中找了片空地,按照一個整型所占位置的大小乘以9,開辟一段連續的空間,于是第一個數據元素就放在數組的第一個位置,第二個放在第二個位置,這樣一次擺放。
(2)、鏈式存儲結構:把數據元素放在任意的存儲單元了,這組存儲單元可以是連續的,也可以是不連續的。
使用鏈式存儲而不用順序存儲的原因是什么?簡單的舉個例子:
順序存儲結構是簡單的有規律的,但是當人在排隊的過程中,總會有人插隊。還會有人上廁所、甚至有人放棄排隊。所以這個隊伍中會增加新成員,也可能會去掉老元素,整個結構都處于時刻變化中,顯然,面對這樣時常要變化的結構,順序存儲是不科學的。那怎么辦呢?就會用到鏈式存儲。舉例:現在如銀行、醫院等地方,設置了排隊系統,也就是每個人去了,先領一個號,等著叫號,叫到時去辦理業務或看病。在等待的過程中,你愛在哪就在哪,可以是坐著、站著或者走動,甚至出去逛一圈,只要及時回來就行。你關注的需要是前一個號有沒有被叫到,如果叫到了,下一個就輪到你了。
鏈式存儲結構中,數據元素的存儲關系并不能反映其邏輯關系,因此需要一個指針存放數據元素的地址,這樣通過地址就可以找到相關聯數據元素的位置。