歡迎轉載和引用,若有問題請聯系 Email : lihn1011@163.com QQ:2279557541
不知不覺,程序員這一行已經做了10年了,博客換了很多個程序寫了無數多,眼看就已經到了而立之年,再次拿起了數據結構的書,打算靜下心來再看一遍,為了加深印象,順手寫下些博客算是留念吧。另外該系列中參考了大量陳杰老師的《大話數據結構》中的內容,在此表示衷心的感謝。
話說,其實我真的不知道如何去定義什么是數據結構。
首先我先說下我的理解其實我理解的數據結構,就是將數據按照某種關系加以聯系,讓其能夠高效率或者簡單的實現某種操作。
然后在引用下百度知道對數據結構的描述
數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成。記為: Data_Structure=(D,R) 其中D是數據元素的集合,R是該集合中所有元素之間的關系的有限集合。
那么數據和數據之間的聯系究竟是什么呢?
數據和數據之間的聯系,其實分為兩種,一種是邏輯上的結構,一種是物理上的結構。
集合結構
指的是數據之間的聯系除了屬于同一個集合外,沒有其他任何的聯系,如圖所示 圖中可以看出來,各個元素之間除了都在大圓圈內,就沒有別的任何聯系了。
線性結構
真不知道該如何定義這個結構。。。先上圖吧 看著這個圖應該很簡單,貌似就是一堆數據有序的進行排隊的感覺,有第一個,也有最后一個。其實在我心里這個就是定義了,然后我再把《大話數據結構》中定義的原文發出來: “線性結構:線性結構中的數據元素之間是一對一的關系?!?/p>樹形結構
之所以叫樹形結構,就是因為這個圖看起來就像一顆倒著的樹。而屬性及結構的特點通過圖也可以看出來,其有根節點,就是最上面那個節點。而各個元素之間的關系,就像是樹干與樹干上的樹枝的關系。是一種一對多的關系。
圖形結構
圖形關系就是一個更復雜的關系了,貌似各個數據元素之間都有可能是有聯系的,是一種多對多的關系。
總結
簡單的總結下各個邏輯結構的區別就是 集合 —–元素間無關系 線性結構—–元素間的關系為一對一的關系 樹形結構—–元素間的關系為一對多的關系 圖形結構—–元素間的關系為多對多的關系
物理結構有兩種分類方式
第一種分類將物理結構分為(《大話數據結構》書中的分類方式) 1、順序存儲結構 2、鏈式存儲結構第二種分類將物理結構分為 1、順序存儲結構 2、鏈式存儲結構 3、索引存儲結構 4、散列存儲結構由于我認為其實索引存儲結構和散列存儲結構都屬于特殊的鏈式存儲結構,所以我這里采用第一種分類方式。 其中 順序存儲結構,其實就是說存儲的數據在計算機內存中是連續且有順序的排列的,這點涉及到一些內存管理的內容,如果你了解C/C++的話,應該對數據在內存結構中的排列方式會有比較深的理解。其他語言的話,只要簡單理解下應該就沒有問題了。 鏈式存儲結構,就是說存儲的數據在內存上不是連續的,每個數據通過一個“鏈”將各個數據聯系起來,所謂的“鏈”在C/C++中比較常見的就是使用指針。
《大話數據結構》 陳杰
新聞熱點
疑難解答