記憶體中連續儲存,索引方便,但擴容和增刪麻煩,並且只能儲存同種型別資料
只能在一端(棧頂)進行操作的線性表,棧的操作包括入棧,出棧和取棧頂元素。棧符合先進後出原則,主要應用於遞迴中。
也是線性表,先進先出,在一端新增元素,在另一端取出元素,主要用於多執行緒阻塞列管理中。
物理儲存單元非連續,非順序,其資料元素的邏輯順序通過指標來實現。每個節點包括元素和指向下乙個節點的指標,因此鍊錶中含有大量指標佔據空間。優點是增刪快,缺點是查詢不方便,適用於資料量小,且需要頻繁增刪操作的場景。
樹可以看作是一種特殊的雙向鍊錶。樹的度指樹的寬度,即結點的分支數。樹的深度指最大層數。
前序遍歷:根-左-右 (針對子樹也是如此) 中序遍歷:左-根-右 後續遍歷:左-右-根
性質:高度為n的樹至少有n+1個結點,最多有2^n - 1 個結點;
第n層最多有2^(n-1)個結點;
6.雜湊表(雜湊表)
根據關鍵碼值(key value)而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。
記錄的位置 = f(key)
其綜合了陣列和鍊錶的特性,定址容易,增刪也方便。
最常用的一種方法——拉鍊法,我們可以理解為「鍊錶的陣列」。當儲存記錄時,通過雜湊函式計算出記錄的雜湊位址;當查詢記錄時,我們通過同樣的是雜湊函式計算記錄的雜湊位址,並按此雜湊位址訪問該記錄。
優點:不論雜湊表中有多少資料,查詢、插入、刪除(有時包括刪除)只需要接近常量的時間即0(1)的時間級。實際上,這只需要幾條機器指令。雜湊表運算得非常快,在電腦程式中,如果需要在一秒種內查詢上千條記錄通常使用雜湊表(例如拼寫檢查器)雜湊表的速度明顯比樹快,樹的操作通常需要o(n)的時間級。雜湊表不僅速度快,程式設計實現也相對容易。如果不需要有序遍歷資料,並且可以提前**資料量的大小。那麼雜湊表在速度和易用性方面是無與倫比的。
缺點:它是基於陣列的,陣列建立後難於擴充套件,某些雜湊表被基本填滿時,效能下降得非常嚴重,所以程式設計師必須要清楚表中將要儲存多少資料(或者準備好定期地把資料轉移到更大的雜湊表中,這是個費時的過程)。
7.堆堆可以看作一棵樹的陣列物件:堆中某個結點的值不大於(小於)其父結點;堆總是一顆完全二叉樹;
一般用於堆排序
8.圖兩大元素:頂點和邊
如果有乙個問題可以通過頂點和邊表示出來,那麼就可以將問題用圖畫出來,然後使用著名的圖演算法(比如廣度優先搜尋或者深度優先搜尋)來找到解決方案。
常用的儲存方式有兩種:鄰接矩陣和鄰接表。
常見的基本資料結構 棧
棧adt 棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧頂。棧的基本操作有進棧 push 和出棧 pop 前者相當於插入,後者相當於刪除最後的元素。在最後插入的元素可以通過使用top例程在執行pop之前進行考查。對空棧進行的pop或top一般被認為是棧adt的錯誤...
opencv基本資料結構
iplimage 首先介紹重要的成員變數 width和height表示了的尺寸。其次是depth和nchannels,depth是指畫素顏色的取值範圍,nchnannels為影象的通道,可以取1,2,3,4 origin變數定義了影象的原點,有兩個取值,分別是ipl origin bl和ipl or...
Python 基本資料結構
列表是python裡的內建的型別之一,可以新增和刪除其中的元素。如 role sam 33 dean 37 可以列表中包含列表,同一列表中包含不同型別的資料。下面介紹列表的一些通用操作,關於list的其他用法,可以通過help list 檢視。a 2,13,12,41,17,23 a 1 列表從0開...