數據結構的理解以及有哪些?和區別?


 

 

一、是什么

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

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

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

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

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

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

 

 

二、有哪些

常見的數據結構有如下:

  • 數組
  • 隊列
  • 鏈表
  • 散列表

數組

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

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

先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據

隊列

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

鏈表

是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的

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

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

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

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

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

散列表

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

三、區別

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

  • 線性結構有:數組、棧、隊列、鏈表等
  • 非線性結構有:樹、圖、堆等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM