當使用 Java 裏面的容器類時,你有沒有想過,怎麼 ArrayList 就像一個無限擴充的數組,也好像鏈表之類的。很好使用,這就是數據結構的用處,只不過你在不知不覺中使用了。node
數據結構內容比較多,細細的講解也是相對費功夫的,不可能達到一蹴而就。我就將常見的數據結構:堆棧、隊列、數組、鏈表和紅黑樹
給你們介紹一下,做爲數據結構的入門,瞭解一下它們的特色便可。數組
數據存儲的經常使用結構有:棧、隊列、數組、鏈表和紅黑樹。
簡單的說:採用該結構的集合,對元素的存取有以下的特色:數據結構
須要注意的 2 個名詞spa
簡單的說,採用該結構的集合,對元素的存取有以下的特色:指針
簡單的說,採用該結構的集合,對元素的存取有以下的特色:code
增刪元素慢blog
指定索引位置增長元素:須要建立一個新數組,將指定新元素存儲在指定索引位置,再把原數組元素根據索引,複製到新數組對應索引的位置。索引
指定索引位置刪除元素:須要建立一個新數組,把原數組元素根據索引,複製到新數組對應索引的位置,原數組中指定索引位置元素不復制到新數組中。隊列
鏈表:linked list,由一系列結點node(鏈表中每個元素稱爲結點)組成,結點能夠在運行時i動態生成。內存
每一個結點包括兩個部分:一個是存儲數據元素的數據域,
一個是存儲下一個結點地址的指針域。
鏈表結構有單向鏈表
與雙向鏈表
。
採用該結構的集合,對元素的存取有以下的特色:
增刪元素快:
二叉樹:binary tree ,是每一個結點不超過2的有序樹(tree) 。
簡單的理解,就是一種相似於樹的結構,只不過每一個結點上都最多隻能有兩個子結點。
二叉樹是每一個節點最多有兩個子樹的樹結構。頂上的叫根結點,兩邊被稱做「左子樹」和「右子樹」。
二叉樹的一種比較有意思的叫作紅黑樹,紅黑樹自己就是一顆二叉查找樹,將節點插入後,該樹仍然是一顆二叉查找樹。也就意味着,樹的鍵值仍然是有序的。
- 節點能夠是紅色的或者黑色的
- 根節點是黑色的
- 葉子節點(特指空節點)是黑色的
- 每一個紅色節點的子節點都是黑色的
- 任何一個節點到其每個葉子節點的全部路徑上黑色節點數相同
速度特別快,趨近平衡樹,查找葉子元素最少和最屢次數很少於二倍。