之前的文章中講過(guò):程序=算法+數(shù)據(jù)結(jié)構(gòu),今天講講什么是數(shù)據(jù)結(jié)構(gòu)及相關(guān)的一些概念
一、數(shù)據(jù)結(jié)構(gòu)的概念
數(shù)據(jù)結(jié)構(gòu)是一種數(shù)據(jù)組織、管理和存儲(chǔ)的格式,它可以幫助我們實(shí)現(xiàn)對(duì)數(shù)據(jù)高效的訪問(wèn)和修改。更準(zhǔn)確地說(shuō),數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)值的集合,可以體現(xiàn)數(shù)據(jù)值之間的關(guān)系,以及可以對(duì)數(shù)據(jù)進(jìn)行應(yīng)用的函數(shù)或操作
簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式。
舉個(gè)栗子:某幼兒園有100人,現(xiàn)在需要去操場(chǎng)做活動(dòng),要求你將100個(gè)人按照一定的方式排列好。
你可以:
-
- 將100個(gè)人拍成一列
- 將100個(gè)人排成兩列
- 將100個(gè)人第一排放一個(gè)人,下面每排比前一排多一人
- 將100個(gè)人排成一個(gè)“8”的形狀
- .......
上面的例子中,100個(gè)小朋友就是數(shù)據(jù),每一種排隊(duì)的方式都是一種數(shù)據(jù)結(jié)構(gòu)。
那么,計(jì)算機(jī)中有哪些數(shù)據(jù)結(jié)構(gòu)呢?
二、常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
直接上圖:

集合結(jié)構(gòu):一堆互不相同的數(shù)據(jù)放一塊就是集合了
線性結(jié)構(gòu):一對(duì)一的結(jié)構(gòu),如數(shù)組 (array), 棧 (stack),隊(duì)列 (queue)
樹(shù)形結(jié)構(gòu):一對(duì)多的結(jié)構(gòu),如二叉樹(shù) (binary tree)
圖狀結(jié)構(gòu):多對(duì)多的結(jié)構(gòu),可以分為無(wú)向圖和有向圖。
總結(jié)
數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式,常見(jiàn)的有集合、線性、樹(shù)形、圖。
下一篇講講集合和線性結(jié)構(gòu),再見(jiàn)!
關(guān)注公眾號(hào): go程序員