一、是什么
數(shù)據(jù)結(jié)構(gòu)是計算機存儲、組織數(shù)據(jù)的方式,是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合
前面講到,一個程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)是實現(xiàn)算法的基礎(chǔ),選擇合適的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率
數(shù)據(jù)元素相互之間的關(guān)系稱為結(jié)構(gòu),根據(jù)數(shù)據(jù)元素之間關(guān)系的不同特性,通常有如下四類基本的結(jié)構(gòu):
- 集合結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素間的關(guān)系是“屬于同一個集合”
- 線性結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對一的關(guān)系
- 樹型結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著一對多的關(guān)系
- 圖形結(jié)構(gòu):該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著多對多的關(guān)系,也稱網(wǎng)狀結(jié)構(gòu)
由于數(shù)據(jù)結(jié)構(gòu)種類太多,邏輯結(jié)構(gòu)可以再分成為:
- 線性結(jié)構(gòu):有序數(shù)據(jù)元素的集合,其中數(shù)據(jù)元素之間的關(guān)系是一對一的關(guān)系,除了第一個和最后一個數(shù)據(jù)元素之外,其它數(shù)據(jù)元素都是首尾相接的
- 非線性結(jié)構(gòu):各個數(shù)據(jù)元素不再保持在一個線性序列中,每個數(shù)據(jù)元素可能與零個或者多個其他數(shù)據(jù)元素發(fā)生關(guān)聯(lián)
二、有哪些
常見的數(shù)據(jù)結(jié)構(gòu)有如下:
- 數(shù)組
- 棧
- 隊列
- 鏈表
- 樹
- 圖
- 堆
- 散列表
數(shù)組
在程序設(shè)計中,為了處理方便, 一般情況把具有相同類型的若干變量按有序的形式組織起來,這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組
棧
一種特殊的線性表,只能在某一端插入和刪除的特殊線性表,按照先進后出的特性存儲數(shù)據(jù)
先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)
隊列
跟棧基本一致,也是一種特殊的線性表,其特性是先進先出,只允許在表的前端進行刪除操作,而在表的后端進行插入操作
鏈表
是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的
鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成
一般情況,每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域
樹
樹是典型的非線性結(jié)構(gòu),在樹的結(jié)構(gòu)中,有且僅有一個根結(jié)點,該結(jié)點沒有前驅(qū)結(jié)點。在樹結(jié)構(gòu)中的其他結(jié)點都有且僅有一個前驅(qū)結(jié)點,而且可以有兩個以上的后繼結(jié)點
圖
一種非線性結(jié)構(gòu)。在圖形結(jié)構(gòu)中,數(shù)據(jù)結(jié)點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那么就表示這兩個頂點具有相鄰關(guān)系
堆
堆是一種特殊的樹形數(shù)據(jù)結(jié)構(gòu),每個結(jié)點都有一個值,特點是根結(jié)點的值最小(或最大),且根結(jié)點的兩個子樹也是一個堆
散列表
若結(jié)構(gòu)中存在關(guān)鍵字和K
相等的記錄,則必定在f(K)
的存儲位置上,不需比較便可直接取得所查記錄
三、區(qū)別
上述的數(shù)據(jù)結(jié)構(gòu),之前的區(qū)別可以分成線性結(jié)構(gòu)和非線性結(jié)構(gòu):
- 線性結(jié)構(gòu)有:數(shù)組、棧、隊列、鏈表等
- 非線性結(jié)構(gòu)有:樹、圖、堆等
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7134瀏覽量
89386 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40190 -
計算機存儲
+關(guān)注
關(guān)注
0文章
13瀏覽量
6837
發(fā)布評論請先 登錄
相關(guān)推薦
評論