什麼是資料結構
一、什麼是資料結構
1、資料結構的定義
資料:從計算機的角度來看,資料是所有能被輸入到計算機中且能被計算機處理的符號的集合。它是計算機操作的物件的總稱,也是計算機處理資訊的某種特定的符號表示形式(二進位制碼的抽象表示?)。
資料元素:資料元素是資料中的一個個體,是資料的基本單位,在計算機中通常作為一個整體來進行考慮和處理。
資料項:一個資料元素可以由多個資料項組成。資料項是具有獨立含義的資料最小單位。
資料、資料元素、資料項這三個的關係類似表、元組、屬性之間的關係,不過表、元組、屬性之間具有確定的關係,而資料、資料元素、資料項之間只有層次關係而沒有具體的關係。
資料結構:資料結構是指資料以及資料相互之間的聯絡,可以看成是相互之間具有某種特定關係的資料元素的集合,因此,可以把資料結構看成是帶結構的資料元素的集合。
資料結構包含以下幾個方面:
資料元素之間的邏輯關係,即資料的邏輯結構。
資料元素及其關係在計算機儲存器中的儲存方式,即資料的儲存結構,也稱為資料的物理結構。
施加在該資料上的操作,即資料的運算。
所以資料結構由三個部分組成:邏輯結構、物理結構、運算。
資料的邏輯結構是從邏輯關係上描述資料(主要是相鄰關係,比如棧、佇列、連結串列等),它與資料的儲存無關,是獨立於計算機的。因此,資料結構可以看作從具體問題中抽象出來的數學模型。
資料的儲存結構是邏輯結構用計算機語言的實現(邏輯結構在計算機儲存中的映像),它是依賴於計算機語言的。
資料的運算是定義在資料的邏輯結構上的,每種邏輯結構都有一組相應的運算。最常用的運算有:檢索(查詢)、插入、刪除、更新、排序等。
對於一種資料結構,其邏輯結構總是唯一的,但它可以對應多種儲存結構,並且在不同的儲存結構中,同一運算的實現過程可能不同。
2、邏輯結構型別
在不產生混淆的情況下,通常將邏輯結構簡稱為資料結構。
資料的邏輯結構主要有以下幾類:
集合:集合中的元素相互獨立,除了同屬於一個集合之外,別無其他關係。(集合中的元素不能重複)
線性結構:線性結構中的節點具有一對一的關係,其特點是開始節點和終端節點都是唯一的,除開始節點和終端節點之外,其餘節點有且僅有一個前驅,有且僅有一個後繼。
樹形結構:樹形結構中的節點具有一對多的關係,其特點是每個節點最多隻有一個前驅,但可以有多個後繼,可以有多個終端節點。
圖形結構:圖形結構中的節點具有多對多的關係,其特點是每個節點的前驅和後繼的數量都可以是任意的。
3、儲存結構型別
順序儲存方法:把邏輯上相鄰的節點儲存在物理上相鄰的儲存單元裡,節點之間的邏輯關係由儲存單元的鄰接關係來體現。
優點:節省儲存空間,可以實現節點的隨機存取(每個節點對應一個序號,由該序號可直接確定節點的儲存地址)
缺點:不便於修改(在對節點進行插入、刪除的操作時,可能要移動一系列的節點)。
鏈式儲存方法:該方法不需要邏輯上相鄰的節點在物理位置上也相鄰,節點之間的邏輯關係由附加的指標欄位表示。
優點:便於修改(在進行插入、刪除操作時,只需要修改對應節點的指標域,不必移動節點)。
缺點:儲存空間利用率較低(有一部分空間用來儲存節點之間的邏輯關係了),不能進行隨機存取(因為邏輯上相鄰的節點在物理位置上不一定相鄰)。
索引儲存方法:該方法通常在儲存節點資訊的同時,還建立附加的索引表。索引表中的每一項稱為索引項,索引項的一般形式是:(關鍵字,地址),其中關鍵字唯一標識一個節點,地址則是指向該節點的指標。
優點:支援隨機訪問(因為索引表是順序儲存的,類似於 C語言中的指標陣列),具有較高的資料修改運算效率。
缺點:索引儲存的方法增加了索引表,降低了儲存空間的利用率。
雜湊(或雜湊)儲存方法:該方法根據節點的關鍵字透過雜湊(或雜湊)函式直接計算出一個值,並將這個值作為該節點的儲存地址。
優點:雜湊儲存方法的優點就是查詢資料快,只要給出要查詢節點的關鍵字,就可以立即計算出對應節點的儲存地址。
缺點:雜湊儲存方法只儲存節點的資料,不儲存節點之間的邏輯關係。所以雜湊儲存方法一般只適合要求能夠快速查詢和插入的場合。
上面基本的儲存方法,既可以單獨使用,也可以組合起來使用。同一種邏輯結構採用不同的儲存方法,可以得到不同的儲存結構。選擇何種儲存結構,主要根據運算方便和演算法的時空要求來決定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4548/viewspace-2837102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是結構化資料?什麼是半結構化資料?
- 資料是什麼——資料的結構
- python演算法與資料結構-什麼是資料結構Python演算法資料結構
- 資料結構中抽象資料型別是什麼?資料結構抽象資料型別
- Python中pandas是什麼?資料結構介紹!Python資料結構
- Mysql索引資料結構為什麼是B+樹?MySql索引資料結構
- 雙向資料繫結是什麼
- 為什麼要學資料結構?資料結構
- 什麼是資料庫?什麼是雲資料庫?資料庫
- 什麼是大資料系統架構大資料架構
- 什麼是非結構化資料(unstructured data)?Struct
- 【演算法與資料結構專場】堆排序是什麼鬼?演算法資料結構排序
- 為什麼資料結構設計是遊戲策劃必備技能?資料結構遊戲
- 什麼是大資料?大資料能做什麼?大資料
- 優先順序佇列是一種什麼樣的資料結構佇列資料結構
- C/S結構是什麼意思?有什麼優點?
- 什麼是大資料?大資料開發是做什麼的?大資料
- 什麼是資料運營?資料運營是做什麼的?
- 什麼是資料蔓延?
- 什麼是資料流?
- 什麼是大資料?大資料
- 什麼是資料探勘??
- 什麼是資料集市
- 【演算法與資料結構專場】二叉堆是什麼鬼?演算法資料結構
- 資料是什麼——更多的資料
- 為什麼演算法和資料結構重要?演算法資料結構
- 什麼是資料標註,它的用途是什麼?
- 到底什麼是大資料?新手學大資料的路徑是什麼?大資料
- 組織結構圖是什麼?怎樣繪製結構圖?
- 什麼是CS和BS結構,兩種結構的區別
- 什麼是資料倉儲?
- 什麼是資料轉換?
- 什麼是資料質量?
- 什麼是資料和資訊
- 什麼是大資料安全?大資料
- 什麼是資料倉儲
- 資料治理:什麼是MDM?
- 什麼是資料增強?