數(shù)據(jù)結(jié)構(gòu)到底學(xué)什么?
數(shù)據(jù)結(jié)構(gòu)是一門研究數(shù)據(jù)存儲(chǔ)方式的學(xué)科,在數(shù)據(jù)結(jié)構(gòu)看來,數(shù)據(jù)的存儲(chǔ)方式要從以下兩個(gè)角度來綜合分析:
物理結(jié)構(gòu):在內(nèi)存中,數(shù)據(jù)可以選擇集中存放,也可以選擇分散存放;
邏輯結(jié)構(gòu):數(shù)據(jù)之間的邏輯關(guān)系有四種,分別是無關(guān)系、“一對(duì)一”關(guān)系、“一對(duì)多”關(guān)系和“多對(duì)多”關(guān)系。
數(shù)據(jù)的物理結(jié)構(gòu)有 2 種,邏輯結(jié)構(gòu)有 4 種,它們可以隨意組合。例如,無關(guān)系的數(shù)據(jù)可以選擇集中存放,也可以選擇分散存放。針對(duì)具有不同物理結(jié)構(gòu)和邏輯結(jié)構(gòu)的數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)都會(huì)給出最恰當(dāng)?shù)拇鎯?chǔ)方案。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),實(shí)際上就是學(xué)習(xí)這些存儲(chǔ)數(shù)據(jù)的方案。
下面是一張數(shù)據(jù)結(jié)構(gòu)的知識(shí)圖譜,幾乎涵蓋了數(shù)據(jù)結(jié)構(gòu)中所有的存儲(chǔ)方案:

注意,想徹底玩轉(zhuǎn)圖 1 中羅列的這些存儲(chǔ)方案也是不容易的,除了掌握各個(gè)存儲(chǔ)方案本身,還要學(xué)會(huì)在各個(gè)存儲(chǔ)方案中完成對(duì)數(shù)據(jù)的“增刪改查”操作,以及用這些存儲(chǔ)方案解決一些常見的實(shí)際問題(例如字符串的模式匹配、矩陣轉(zhuǎn)置、最小生成樹、最短路徑等)。慶幸地是,這些知識(shí)在數(shù)據(jù)結(jié)構(gòu)中都會(huì)講到。
數(shù)據(jù)結(jié)構(gòu)和算法是緊密相關(guān)的,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的過程中,還要掌握一些常用的算法。關(guān)于數(shù)據(jù)結(jié)構(gòu)與算法的關(guān)系和區(qū)別,讀者可以猛擊《數(shù)據(jù)結(jié)構(gòu)和算法不是一碼事》一文。
總結(jié)
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),就是學(xué)習(xí)各種存儲(chǔ)數(shù)據(jù)的方案。玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu),實(shí)際開發(fā)中遇到的各類數(shù)據(jù)存儲(chǔ)問題都難不倒你。