數據結構:相互之間存在一種或多種特定關係的數據元素的集合程序員
算法:對結構中的數據進行各類處理算法
應用方面:數組
1. 現實世界數據存儲bash
2. 程序員的工具數據結構
3. 現實世界的建模工具
數據:全部能輸入到計算機中去的描述客觀事物的符號,數據不只包括整型、實數等數值類型,包括聲音、圖像、視頻等非數值類型 數據項:有獨立含義的數據最小單位,也稱域 數據對象:相同特性數據元素的集合,是數據的一個子集 數據元素:數據的基本單位,也稱結點或記錄大數據
1 數據結構 優勢 缺點
2 數組 使用方便,查詢效率、比鏈表高,內存爲一連續的區域 大小固定,不適合動態存儲,不方便動態添加
3 有序數組 比無序的數組查找快 刪除和插入慢,大小固定
4 棧 提供後進先出的存取方式 存取其餘項很慢
5 隊列 提供先進後出的存取方式 存取其餘項很慢
6 鏈表 鏈表實現數據元素儲存的順序儲存,是連續的 由於含有大量的指針域,因此佔用空間大,同時由於只有頭結點(後面說明)是明確知道地址的,因此查找鏈表中的元素須要從頭開始尋找,很是麻煩
7 二叉樹(樹平衡的狀況下) 查找、 插入、 刪除都快 刪除算法複雜
8 紅黑樹(平衡樹) 查找、 插入 、刪除都快 算法複雜
9 2-3-4樹(平衡樹) 查找 、插入、 刪除都快 算法複雜
10 哈希表 插入快、經過關鍵字存取快 刪除慢
11 堆 插入 刪除快、對最大數據項的存取很快 對其餘數據項存取慢
12 圖 對現實世界建模 有些算法慢且複雜
複製代碼
集合結構:集合結構的數據元素除"同屬於一個集合"外,他們之間沒有其餘關係spa
線性結構:線性結構中的數據元素之間一對一的關係 如線性表、棧、隊列3d
樹形結構:樹形結構中的數據元素之間存在一對多的層次關係 如樹指針
圖形結構:圖形結構中的數據元素多對多的關係 如圖
任何一個結點均可能和其它結點有關係
數據的邏輯結構分兩大類: 線性結構 和 非線性結構 數據的存儲方法有四種: 順序存儲方法、連接存儲方法、索引存儲方法和散列存儲方法 常見的運算:插入、刪除、修改、查找、排序順序存儲:在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱做線性表的順序存儲結構
優勢:
在結點等長時能夠隨機存取
存儲密度高節省存儲空間
用結點的物理次序反映結點之間的邏輯關係
缺點:
插入和刪除結點時要移動大量的結點
必須靜態分配連續空間
連接存儲:在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元能夠是連續的,也能夠是不連續的)
索引存儲:除創建存儲結點信息外,還創建附加的索引表來標識結點的地址。索引表由若干索引項組成
優勢:
插入和刪除比較靈活,不須要大量移動結點
動態分配空間比較靈活,不須要預先申請最大的連續空間
缺點:
增長指針的空間開銷
檢索必須沿鏈進行,不能隨機存取
散列存儲:散列存儲,是一種力圖將數據元素的存儲位置與關鍵碼之間創建肯定對應關係的查找技術
索引表由若干索引項組成。若是每一個節點在索引表中都有一個索引項,則該索引表就被稱爲稠密索引。若一組節點在索引表中只對應於一個索引項,則該索引表就成爲稀疏索引。索引項的通常形式通常是關鍵字、地址
抽象數據類型的好處:抽象數據類型是與表示無關的數據類型,是一個數據模型及定義在該模型上的一組運算,使用戶程序只能經過抽象數據類型定義的某些操做來訪問其中的數據,實現了信息隱藏如下是對內容的總結: