今天就跟大家聊聊有關數據結構是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、什么是數據結構
1、數據結構的定義
數據:從計算機的角度來看,數據是所有能被輸入到計算機中且能被計算機處理的符號的集合。它是計算機操作的對象的總稱,也是計算機處理信息的某種特定的符號表示形式(二進制碼的抽象表示?)。
數據元素:數據元素是數據中的一個個體,是數據的基本單位,在計算機中通常作為一個整體來進行考慮和處理。
數據項:一個數據元素可以由多個數據項組成。數據項是具有獨立含義的數據最小單位。
數據、數據元素、數據項這三個的關系類似表、元組、屬性之間的關系,不過表、元組、屬性之間具有確定的關系,而數據、數據元素、數據項之間只有層次關系而沒有具體的關系。
數據結構:數據結構是指數據以及數據相互之間的聯系,可以看成是相互之間具有某種特定關系的數據元素的集合,因此,可以把數據結構看成是帶結構的數據元素的集合。
數據結構包含以下幾個方面:
數據元素之間的邏輯關系,即數據的邏輯結構。
數據元素及其關系在計算機存儲器中的存儲方式,即數據的存儲結構,也稱為數據的物理結構。
施加在該數據上的操作,即數據的運算。
所以數據結構由三個部分組成:邏輯結構、物理結構、運算。
數據的邏輯結構是從邏輯關系上描述數據(主要是相鄰關系,比如棧、隊列、鏈表等),它與數據的存儲無關,是獨立于計算機的。因此,數據結構可以看作從具體問題中抽象出來的數學模型。
數據的存儲結構是邏輯結構用計算機語言的實現(邏輯結構在計算機存儲中的映像),它是依賴于計算機語言的。
數據的運算是定義在數據的邏輯結構上的,每種邏輯結構都有一組相應的運算。最常用的運算有:檢索(查找)、插入、刪除、更新、排序等。
對于一種數據結構,其邏輯結構總是唯一的,但它可以對應多種存儲結構,并且在不同的存儲結構中,同一運算的實現過程可能不同。
2、邏輯結構類型
在不產生混淆的情況下,通常將邏輯結構簡稱為數據結構。
數據的邏輯結構主要有以下幾類:
集合:集合中的元素相互獨立,除了同屬于一個集合之外,別無其他關系。(集合中的元素不能重復)
線性結構:線性結構中的節點具有一對一的關系,其特點是開始節點和終端節點都是唯一的,除開始節點和終端節點之外,其余節點有且僅有一個前驅,有且僅有一個后繼。
樹形結構:樹形結構中的節點具有一對多的關系,其特點是每個節點最多只有一個前驅,但可以有多個后繼,可以有多個終端節點。
圖形結構:圖形結構中的節點具有多對多的關系,其特點是每個節點的前驅和后繼的數量都可以是任意的。
3、存儲結構類型
順序存儲方法:把邏輯上相鄰的節點存儲在物理上相鄰的存儲單元里,節點之間的邏輯關系由存儲單元的鄰接關系來體現。
優點:節省存儲空間,可以實現節點的隨機存?。總€節點對應一個序號,由該序號可直接確定節點的存儲地址)
缺點:不便于修改(在對節點進行插入、刪除的操作時,可能要移動一系列的節點)。
鏈式存儲方法:該方法不需要邏輯上相鄰的節點在物理位置上也相鄰,節點之間的邏輯關系由附加的指針字段表示。
優點:便于修改(在進行插入、刪除操作時,只需要修改對應節點的指針域,不必移動節點)。
缺點:存儲空間利用率較低(有一部分空間用來存儲節點之間的邏輯關系了),不能進行隨機存?。ㄒ驗檫壿嬌舷噜彽墓濣c在物理位置上不一定相鄰)。
索引存儲方法:該方法通常在存儲節點信息的同時,還建立附加的索引表。索引表中的每一項稱為索引項,索引項的一般形式是:(關鍵字,地址),其中關鍵字唯一標識一個節點,地址則是指向該節點的指針。
優點:支持隨機訪問(因為索引表是順序存儲的,類似于 C語言中的指針數組),具有較高的數據修改運算效率。
缺點:索引存儲的方法增加了索引表,降低了存儲空間的利用率。
哈希(或散列)存儲方法:該方法根據節點的關鍵字通過哈希(或散列)函數直接計算出一個值,并將這個值作為該節點的存儲地址。
優點:哈希存儲方法的優點就是查找數據快,只要給出要查找節點的關鍵字,就可以立即計算出對應節點的存儲地址。
缺點:哈希存儲方法只存儲節點的數據,不存儲節點之間的邏輯關系。所以哈希存儲方法一般只適合要求能夠快速查找和插入的場合。
上面基本的存儲方法,既可以單獨使用,也可以組合起來使用。同一種邏輯結構采用不同的存儲方法,可以得到不同的存儲結構。選擇何種存儲結構,主要根據運算方便和算法的時空要求來決定。
看完上述內容,你們對數據結構是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。