說說你對資料結構的理解?有哪些?區別?

林恒發表於2024-04-10

一、是什麼

資料結構是計算機儲存、組織資料的方式,是指相互之間存在一種或多種特定關係的資料元素的集合

前面講到,一個程式 = 演算法 + 資料結構,資料結構是實現演算法的基礎,選擇合適的資料結構可以帶來更高的執行或者儲存效率

資料元素相互之間的關係稱為結構,根據資料元素之間關係的不同特性,通常有如下四類基本的結構:

  • 集合結構:該結構的資料元素間的關係是“屬於同一個集合”
  • 線性結構:該結構的資料元素之間存在著一對一的關係
  • 樹型結構:該結構的資料元素之間存在著一對多的關係
  • 圖形結構:該結構的資料元素之間存在著多對多的關係,也稱網狀結構

由於資料結構種類太多,邏輯結構可以再分成為:

  • 線性結構:有序資料元素的集合,其中資料元素之間的關係是一對一的關係,除了第一個和最後一個資料元素之外,其它資料元素都是首尾相接的
  • 非線性結構:各個資料元素不再保持在一個線性序列中,每個資料元素可能與零個或者多個其他資料元素髮生關聯

二、有哪些

常見的資料結構有如下:

  • 陣列
  • 佇列
  • 連結串列
  • 雜湊表

陣列

在程式設計中,為了處理方便, 一般情況把具有相同型別的若干變數按有序的形式組織起來,這些按序排列的同類資料元素的集合稱為陣列

一種特殊的線性表,只能在某一端插入和刪除的特殊線性表,按照先進後出的特性儲存資料

先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料

佇列

跟棧基本一致,也是一種特殊的線性表,其特性是先進先出,只允許在表的前端進行刪除操作,而在表的後端進行插入操作

連結串列

是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是透過連結串列中的指標連結次序實現的

連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成

一般情況,每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域

樹是典型的非線性結構,在樹的結構中,有且僅有一個根結點,該結點沒有前驅結點。在樹結構中的其他結點都有且僅有一個前驅結點,而且可以有兩個以上的後繼結點

#圖

一種非線性結構。在圖結結構中,資料結點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那麼就表示這兩個頂點具有相鄰關係

堆是一種特殊的樹形資料結構,每個結點都有一個值,特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆

雜湊表

若結構中存在關鍵字和K相等的記錄,則必定在f(K)的儲存位置上,不需比較便可直接取得所查記錄

三、區別

上述的資料結構,之前的區別可以分成線性結構和非線性結構:

  • 線性結構有:陣列、棧、佇列、連結串列等
  • 非線性結構有:樹、圖、堆等

參考文獻

  • https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84
  • https://baike.baidu.com/item/資料結構/1450

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文件,大家一起討論學習,一起進步。

說說你對資料結構的理解?有哪些?區別?

相關文章