一、數(shù)據(jù)結(jié)構(gòu)是什么
數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)可以理解為:數(shù)據(jù) + 結(jié)構(gòu)。數(shù)據(jù)是描述客觀事物的符號(hào),為程序操控,存儲(chǔ)在計(jì)算機(jī)上,結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。在很多書籍以及博客中,對(duì)數(shù)據(jù)結(jié)構(gòu)的解釋為數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)方式。
數(shù)據(jù)的邏輯結(jié)構(gòu)
數(shù)據(jù)元素間抽象化的相互關(guān)系,與數(shù)據(jù)的存儲(chǔ)無(wú)關(guān),獨(dú)立于計(jì)算機(jī),但邏輯結(jié)構(gòu)決定元素的輸入、存儲(chǔ)、發(fā)送、處理和信息傳遞的基本操作功能。邏輯結(jié)構(gòu)有四種基本類型:集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)和圖形結(jié)構(gòu)。表和樹(shù)是最常用的兩種高效數(shù)據(jù)結(jié)構(gòu),許多高效的算法能夠用這兩種數(shù)據(jù)結(jié)構(gòu)來(lái)設(shè)計(jì)實(shí)現(xiàn)
1.集合結(jié)構(gòu)
由若干元素集合在一起形成的團(tuán)聚體(或稱集合體)相互堆積起來(lái)的一種結(jié)構(gòu)類型,數(shù)據(jù)元素之間無(wú)其他的關(guān)系,僅僅屬于同一集合體而已。
2.線性結(jié)構(gòu)
數(shù)據(jù)元素之間存在一一對(duì)應(yīng)的關(guān)系,其開(kāi)始節(jié)點(diǎn)和終端節(jié)點(diǎn)具有少數(shù)性,除了開(kāi)始開(kāi)始節(jié)點(diǎn)和終端節(jié)點(diǎn),其他的元素有且僅有一個(gè)前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn),線性表就是一個(gè)典型。
3.樹(shù)形結(jié)構(gòu)
數(shù)據(jù)元素之間存在著一一對(duì)應(yīng)的關(guān)系,每一個(gè)數(shù)據(jù)元素只有一個(gè)前驅(qū)節(jié)點(diǎn),但是卻又很多后繼節(jié)點(diǎn) 終端節(jié)點(diǎn)可以有多個(gè)。二叉樹(shù)就是一個(gè)典型。
4.圖形結(jié)構(gòu)
又稱為非線性結(jié)構(gòu),數(shù)據(jù)元素之間存在著多對(duì)多的關(guān)系,其前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)的個(gè)數(shù)可以是任意多個(gè)
注:四種邏輯結(jié)構(gòu)存在著關(guān)系:樹(shù)形結(jié)構(gòu)是圖形結(jié)構(gòu)的特殊形式,而線性結(jié)構(gòu)又是樹(shù)形結(jié)構(gòu)的特殊形式。
延伸閱讀:
二、順序存儲(chǔ)結(jié)構(gòu)是什么
把邏輯上相鄰的數(shù)據(jù)存儲(chǔ)在物理位置上相鄰的存儲(chǔ)單位里,用物理位置上的相鄰來(lái)體現(xiàn)邏輯上的相鄰,此種存儲(chǔ)結(jié)構(gòu)的又在于節(jié)省了存儲(chǔ)空間,因?yàn)榉峙浣o數(shù)據(jù)的存儲(chǔ)單元完全用于了數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)之間的邏輯關(guān)系沒(méi)有占用存儲(chǔ)空間,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的隨機(jī)存取,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)序號(hào),由這個(gè)序號(hào)可以計(jì)算出數(shù)據(jù)的存儲(chǔ)地址,缺點(diǎn)在于不變于數(shù)據(jù)的修改,對(duì)數(shù)據(jù)的插入和刪除可能要移動(dòng)一系列的數(shù)據(jù)。