目錄
資料結構概述及比較
棧和佇列
棧的儲存方式
棧的效率
佇列的儲存方式
迴圈佇列
佇列的效率
雙端佇列
優先順序佇列 鍊錶
鏈結點雙端鍊錶
雙向鍊錶
迭代器資料結構
優點缺點
陣列資料插入尾端快,如果知道下標查詢快
根據value查詢慢,刪除慢,大小固定
有序陣列
比無序陣列根據value查詢快
刪除和插入慢,大小固定
棧提供後進先出方式的訪問
訪問其他項很慢
佇列提供先進先出方式的訪問
訪問其他項很慢
鍊錶插入和刪除快
查詢慢二叉樹
查詢、插入、刪除都快(如果數保持平衡)
刪除演算法複雜
紅黑樹查詢、插入、刪除都快,樹總是保持平衡的
演算法複雜
2-3-4數
查詢、插入、刪除都快。樹總是保持平衡的,類似的樹對磁碟儲存有用
演算法複雜
雜湊表如果關鍵字已知則訪問極快。插入快
刪除慢,如果不知道關鍵字則訪問很慢,對儲存空間使用不充分
堆插入、刪除快,對最大資料項的訪問很快
對其他資料項訪問很慢
圖對現實世界建模
有些演算法慢且複雜
注意:具有下標的只有陣列和雜湊表。
後進先出
stackx類中實現的棧,資料項入棧和出棧的時間複雜度為常數o(1)
先進先出
避免佇列不滿卻不能插入新資料的問題。
和棧一樣,佇列中插入資料和移除資料時間複雜度均為o(1)
雙端佇列就是兩端都是結尾的佇列,佇列的每一端都可以插入或者刪除
按照關鍵字排列的佇列,插入效率低o(n),刪除效率高o(1)
與普通鍊錶的區別是第乙個鏈結點有對最後乙個鍊錶的引用,如下圖
雙端鍊錶特點:可以在尾部插入insertlast(),因為插入前可以知道最後乙個鏈結點,插入後最後乙個鏈結點就是倒數第二個鏈結點,所以尾部插入效率很高,但是尾部刪除由於不知道倒數第二個鏈結點,所以效率很低,需要借助後面的雙向鍊錶。
特點:允許反向遍歷並且可以快速刪除最後乙個結點
迭代器是乙個引用,他被封裝在類的物件中,這個引用指向相關聯的鍊錶的鏈結點
迭代器方法允許使用者沿鍊錶移動迭代器,並訪問當前指示的鏈結點
能用迭代器遍歷鍊錶,在選定的鏈結點(或者所有鏈結點)上執行某些操作
二叉樹:樹中每個節點最多兩個子節點,父節點大於左子節點,小於右子節點,其他資料也稱為有序二叉樹。
重複關鍵字放在相同大小父節點的右子節點
中序遍歷按照關鍵值的公升序訪問節點
紅黑樹:通過一定的演算法(旋轉、移動)保持平衡的二叉樹
將0-199壓縮到0-9.199是largenumber,smallrange是後面的10. smallnumber = largenumber%smallrange,這樣就把0-199壓縮到0-9。
雜湊衝突:將下乙個資料對映到單元格時已經發現裡面有資料了,既會產生衝突。
線性探測:線性的查詢空白單元格,找到了然後插入資料
二次探測:步驟是步數的平方,比如線性探測是:x+1,x+2,x+3。則二次探測是:x+1二次方,x+2二次方,x+3二次方
再雜湊法:為了消除原始聚集和二次聚集,可以使用再雜湊法,再雜湊法必須具備如下特點:1.和第乙個雜湊函式不同,2.不能輸出0
資料結構概述
1 資料 資料是資訊的的載體,是描述客觀事物的數 字元,以及所有能輸入到計算機中並被電腦程式識別和處理的符號的集合。資料大致可以分為 數值型資料 整數 浮點數 複數 雙精度數等 非數值型資料 字元 字串,以及文字 圖形 影象 語音等資料 2 資料結構 data structure 資料結構有兩個層次...
資料結構概述
還可以通過另乙個方面來看資料結構,那就是從它們的強項和弱項來看。在這裡用 的 方式來概述主要資料結構。下面的表顯示了不同資料結構的優缺點,大致給出它們的特性,就象從天空中鳥瞰地面的風景一樣。所以如果對其中的術語不太清楚的話,請不要太著急。陣列 插入快,如果知道下標 但查詢慢,刪除慢,大小固定 有序陣...
資料結構 概述
資料結構概述 定義 我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢 某個元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這 個相應的操作也叫演算法。資料結構 個體 個體的關係 演算法 對儲存資料的操作 演...