数据结构的组成
文章目錄
- 數(shù)據(jù)結構的組成
- 存儲結構
- 順序
- 鏈
- 索引
- 散列
- 邏輯結構
- 線性結構
- 棧
- 隊列
- 串
- 數(shù)組
- 鏈表
- 非線性結構
- 樹
- 圖
- 算法
數(shù)據(jù)結構的組成
數(shù)據(jù)結構由存儲結構、邏輯結構及算法組成
存儲結構、邏輯結構與算法之間的關系
存儲結構抽象出邏輯結構
邏輯結構依賴于算法的實現(xiàn)
存儲結構制約算法的實現(xiàn)
存儲結構
又名物理結構,是數(shù)據(jù)存儲到計算機上的真實結構,存儲結構分四類:
-
順序
概念:順序存儲結構是把邏輯上相鄰的結點存儲在物理位置上相鄰的存儲單元中,結點之間的邏輯關系由存儲單元的鄰接關系來體現(xiàn)。
理解:用一段連續(xù)的地址來存放數(shù)據(jù)
優(yōu)點:
隨機存取表中元素
存儲密度大
缺點:
插入和刪除操作需要移動元素
操作:
元素的插入:順序結構中,若插入元素,則插入元素的位置后的元素,都需要整體向后移動一個位置,為即將要插入的元素空出一個位置,再將元素放入
元素的刪除:與插入類似,在順序結構中,若刪除元素,則需要刪除元素位置后的所有元素,都需要整體向前移動一個位置,并覆蓋掉需要刪除的元素,將最后一個元素移除
-
鏈
概念:在計算機中用一組任意的存儲單元存儲線性表的數(shù)據(jù)元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)。它不要求邏輯上相鄰的元素在物理位置上也相鄰,因此它沒有順序存儲結構所具有的弱點,但同時也失去了順序表可以隨機存取的優(yōu)點
理解:元素的物理存放不具備必要連續(xù)性,由元素的指針指向下一個數(shù)據(jù),形成邏輯上連續(xù)
優(yōu)點:
插入或刪除方便,空間使用靈活
邏輯相鄰的節(jié)點物理上不必相鄰
缺點:
存儲密度小,空間利用度低(每個節(jié)點都由數(shù)據(jù)域和指針域組成,所以相同空間內假設全存滿的話,順序比鏈式存儲更多)
查找會相較順序存儲方式復雜一些,花費的時間更多
操作:
元素的添加:更新鏈表的尾部元素指針地址,將指針指向需要添加的元素的地址
元素的插入:第一步需要將新元素的指針指向需要插入的元素地址,第二步將新元素需要插入鏈表位置的前驅位置指向新元素
元素的刪除:先找到被移除結點的前驅位置,前它的前驅位置的指針地址替換為被移除結點的指針地址
-
索引
概念:除建立存儲結點信息外,還建立 附加的索引來標識結點的地址。索引表由若干索引組成
優(yōu)點
檢索速度快
缺點
增了附加的索引表,會占用較多的存儲空間
-
散列
概念:根據(jù)關鍵碼值 (key Value)而直接進行訪問的數(shù)據(jù)結構。它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找 的速度。這個映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表
優(yōu)點:運算速度快,不論散列表中的數(shù)據(jù)有多少,其查找、插入、刪除的時間復雜度為O(1)
缺點:由于散列是基于數(shù)組的,數(shù)組創(chuàng)建后難于擴展,某些散列表被基本填滿時,性能下降得非常嚴重
邏輯結構
是數(shù)據(jù)組合規(guī)則與關系的抽象描述,一般所討論的數(shù)據(jù)結構通常指邏輯結構,邏輯結構按特性來區(qū)分,分為線性結構和非線性結構
線性結構
-
棧
-
隊列
-
串
-
數(shù)組
-
鏈表
非線性結構
-
樹
-
圖
算法
是針對邏輯結構一系列的操作方法,算法在考慮性能的時候受存儲結構制約
總結
- 上一篇: python uniform函数均匀分布
- 下一篇: jupyter远程访问服务器