數(shù)據(jù)結(jié)構(gòu),直白地理解,就是研究數(shù)據(jù)的存儲方式。
我們知道,數(shù)據(jù)存儲只有一個目的,即為了方便后期對數(shù)據(jù)的再利用,就如同我們使用數(shù)組存儲{1,2,3,4,5}是為了后期取得它們的加和值,無緣由的數(shù)據(jù)存儲行為是對存儲空間的不負(fù)責(zé)任。
因此,數(shù)據(jù)在計算機存儲空間的存放,決不是胡亂的,這就要求我們選擇一種好的方式來存儲數(shù)據(jù),而這也是數(shù)據(jù)結(jié)構(gòu)的核心內(nèi)容。
例如,一直以來大家面對的數(shù)據(jù)存儲,都是類似存儲 1、2、{a,b,c} 這樣的問題,解決方式無疑是用變量或者數(shù)組對數(shù)據(jù)進(jìn)行存儲,即:
int a=1;
int b=2;
char str[3]={'a','b','c'};
但是,如果要存儲這樣一組數(shù)據(jù):{張亮,張平,張華,張群,張晶,張磊},數(shù)據(jù)之間具有這樣的關(guān)系:張亮是張平、張華和張群的父親,同時張平還是張晶和張磊的父親,數(shù)據(jù)之間的關(guān)系如圖1 所示:
圖 1 數(shù)據(jù)及數(shù)據(jù)之間的關(guān)系
對于存儲之間具有復(fù)雜關(guān)系的數(shù)據(jù),如果還是用變量或數(shù)組來存儲(比如用數(shù)組存儲 {“張亮”,"張平",“張華”,"張群","張晶","張磊"} ),數(shù)據(jù)存儲是沒有問題,但是無法體現(xiàn)數(shù)據(jù)之間的邏輯關(guān)系,后期根本無法使用,顯然不明智。
針對此類數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)中提供有專門的樹結(jié)構(gòu)來存儲這類數(shù)據(jù)。
再比如,導(dǎo)航無疑是出游旅行的必備神器,在我們程序員眼中,無論是哪款導(dǎo)航軟件,其導(dǎo)航功能的實現(xiàn)都需要大量地圖數(shù)據(jù)的支持。很明顯,這些數(shù)據(jù)絕不是使用變量或數(shù)組進(jìn)行存儲的,那樣對于數(shù)據(jù)的使用簡直是個悲劇。
針對此類數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)提供了圖存儲結(jié)構(gòu),專門用于存儲這類數(shù)據(jù)。
通過以上兩個示例可以體會出,數(shù)據(jù)結(jié)構(gòu)教會我們的絕不僅僅是如何存儲 1、2、{a,b,c} 這樣簡單的數(shù)據(jù),而是解決具有復(fù)雜關(guān)系的大量數(shù)據(jù)的存儲問題。
因此,數(shù)據(jù)結(jié)構(gòu)是什么? 我認(rèn)為,數(shù)據(jù)結(jié)構(gòu)是一門學(xué)科,它教會我們“如何存儲具有復(fù)雜關(guān)系的數(shù)據(jù)更有助于后期對數(shù)據(jù)的再利用”。
-
數(shù)據(jù)存儲
+關(guān)注
關(guān)注
5文章
983瀏覽量
51056 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40230 -
計算機存儲
+關(guān)注
關(guān)注
0文章
13瀏覽量
6845
發(fā)布評論請先 登錄
相關(guān)推薦
評論