本篇文章將結(jié)合《算法》第4版、業(yè)界大牛的博客和自己的理解,具體描述數(shù)據(jù)結(jié)構(gòu)的一些概念窗慎,如有錯(cuò)誤拧揽,請大佬指出僻焚。如有侵權(quán),請聯(lián)系我刪除,謝謝。
數(shù)據(jù)結(jié)構(gòu)
1.基礎(chǔ)概念
數(shù)據(jù)結(jié)構(gòu)是指反映數(shù)據(jù)元素之間關(guān)系的數(shù)據(jù)元素的集合恢口。而數(shù)據(jù)元素具有廣泛含義,一般來說穷躁,現(xiàn)實(shí)世界中客觀存在的一切個(gè)體都可以是數(shù)據(jù)元素耕肩。它可以是一個(gè)數(shù)字或者一個(gè)字符,也可以是一個(gè)具體的事物,或者其他更為復(fù)雜的信息猿诸。
數(shù)據(jù)結(jié)構(gòu)作為數(shù)據(jù)元素的集合婚被,包括邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)兩種。
(1)數(shù)據(jù)的邏輯結(jié)構(gòu)
指反映數(shù)據(jù)元素之間邏輯關(guān)系(即前后件關(guān)系)的數(shù)據(jù)結(jié)構(gòu)两芳。包括數(shù)據(jù)元素的集合和數(shù)據(jù)元素之間前后關(guān)系這2個(gè)要素摔寨。
(2)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
又稱數(shù)據(jù)的物理結(jié)構(gòu),指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放方式怖辆。因?yàn)橛?jì)算機(jī)中存放數(shù)據(jù)元素的位置很可能不是連續(xù)的,所以在存儲(chǔ)的時(shí)候删顶,不僅要存放數(shù)據(jù)的信息竖螃,還要存放數(shù)據(jù)間的前后件的信息。只有這樣才能更好地表示計(jì)算機(jī)存儲(chǔ)空間中數(shù)據(jù)之間的邏輯關(guān)系逗余。
數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)方式包括順序存儲(chǔ)特咆、鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)和散列存儲(chǔ)等录粱,采用不同的存儲(chǔ)結(jié)構(gòu)使得數(shù)據(jù)處理的效率不同腻格,所以在處理數(shù)據(jù)的時(shí)候,要選擇合適的存儲(chǔ)結(jié)構(gòu)啥繁。
2.圖形表示
前后件關(guān)系是數(shù)據(jù)元素之間最基本的關(guān)系菜职。前后件關(guān)系中,每一個(gè)二元組都可以用圖形來表示旗闽。用中間標(biāo)有元素值的方框來表示數(shù)據(jù)元素酬核,稱為數(shù)據(jù)結(jié)點(diǎn),簡稱結(jié)點(diǎn)适室。對于每一個(gè)二元組嫡意,需要用一條有向線段從前件指向后件。
例如捣辆,一年四季的數(shù)據(jù)結(jié)構(gòu)可以用如圖所示的圖形來表示蔬螟。
用圖形表示數(shù)據(jù)結(jié)構(gòu)更為直觀易懂,在沒有歧義的情況下汽畴,前件結(jié)點(diǎn)到后件結(jié)點(diǎn)連線上的箭頭可以省去旧巾。
3.線性和非線性結(jié)構(gòu)
根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般可將時(shí)間結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)和非線性結(jié)構(gòu)整袁。
若一非空的數(shù)據(jù)結(jié)構(gòu)有且只有一個(gè)根結(jié)點(diǎn)菠齿,并且每個(gè)結(jié)點(diǎn)最多有一個(gè)直接前驅(qū)和一個(gè)直接后繼,則稱線性結(jié)構(gòu)坐昙,也稱線性表绳匀。不滿足以上條件的稱為非線性結(jié)構(gòu)。
注意:空的數(shù)據(jù)結(jié)構(gòu),可能是線性結(jié)構(gòu)疾棵,也可能是非線性結(jié)構(gòu)戈钢,要根據(jù)對該數(shù)據(jù)結(jié)構(gòu)的運(yùn)算規(guī)則來判斷。
這一篇講的是數(shù)據(jù)結(jié)構(gòu)的基本要點(diǎn)是尔,內(nèi)容不多殉了,也容易理解。下一篇講線性表的一些概念和運(yùn)算拟枚。敬請期待哦<( ̄︶ ̄)>薪铜。