數組是最簡單、也是使用最普遍的數據結構。數組是能夠在內存中連續存儲多個元素的結構,在內存中的分配也是連續的,數組中的元素經過數組下標進行訪問,數組下標從0開始。數組
棧是一種特殊的線性表,僅能在線性表的一端操做,棧頂容許操做,棧底不容許操做。 棧的特色是:先進後出,或者說是後進先出,從棧頂放入元素的操做叫入棧,取出元素叫出棧。數據結構
隊列與棧同樣,也是一種線性表,不一樣的是,隊列能夠在一端添加元素,在另外一端取出元素,也就是:先進先出。從一端放入元素的操做稱爲入隊,取出元素爲出隊。指針
鏈表是物理存儲單元上非連續的、非順序的存儲結構,數據元素的邏輯順序是經過鏈表的指針地址實現,每一個元素包含兩個結點,一個是存儲元素的數據域 (內存空間),另外一個是指向下一個結點地址的指針域。根據指針的指向,鏈表能造成不一樣的結構,例如單鏈表,雙向鏈表,循環鏈表等。對象
散列表,也叫哈希表,是根據關鍵碼和值 (key和value) 直接進行訪問的數據結構,經過key和value來映射到集合中的一個位置,這樣就能夠很快找到集合中的對應元素。隊列
樹是一種數據結構,它是由n(n>=1)個有限節點組成一個具備層次關係的集合。把它叫作 「樹」 是由於它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。在平常的應用中,咱們討論和用的更多的是樹的其中一種結構,就是二叉樹。內存
堆是一種比較特殊的數據結構,能夠被看作一棵樹的數組對象,具備如下的性質: 堆中某個節點的值老是不大於或不小於其父節點的值; 堆老是一棵徹底二叉樹。List
圖是由結點的有窮集合V和邊的集合E組成。其中,爲了與樹形結構加以區別,在圖結構中經常將結點稱爲頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具備相鄰關係。二叉樹