數據結結構

<font color="pink">數據結構= 程序 + 算法 </font>java

  • 數據結構有什麼用node

    當咱們使用着java官方給你提供的容器的時候,咱們用起來是很是方便的,ArrayList實際上是一個無線擴充的數據LinkedList實際上是一個鏈表。
    現實世界中存儲數據,咱們要經過一些工具或者建模來進行存儲。每種數據結構都有本身的優缺點。
      而算法,在這麼多的數據中若是以最快的速度實現插入,刪除,查找數據問題
      咱們java語言是一種面向對象的編程語言,java就至關於自動檔汽車,C語言至關於手動擋汽車,python就是無人駕駛汽車,數據結構至關於變速箱的工做原理,若是你懂變速箱的工做原理,那麼不但能夠開車,也可修車,還能夠造車
       數據結構內容很是多,咱們接收java當中常見的數據結構:堆棧,隊列,數組,鏈表和紅黑樹
  • 常見的數據結構:python

    數據存儲的常見結構:棧,隊列,數組,鏈表,和紅黑樹。算法

  • 編程

    棧,stack,又稱爲堆棧,他是運算受限的線性表結構,它的限制是僅容許在標的一端插入和刪除操做,不容許在其餘任何位置進行添加,查找,刪除等操做。數組

    簡單的說,採用結構的集合,對元素的存取有如下特色數據結構

    • 先進後出(存進去的元素,要在他後面的元素依此取出後,再能取出該元素)。例如:子彈壓進彈夾的動做編程語言

    • 棧的入口,出口都是棧的頂端位置。

    空棧:棧頂棧底相等ide

    壓棧:存儲元素,元素存儲到棧的頂端位置,棧中已有的元素依此向棧底移動一個位置。工具

    彈棧:取元素,棧的頂端位置元素取出,棧中已有元素依此向棧頂方向移動一個位置。

  • 隊列

    隊列,queue,簡稱對,它同堆棧幾乎同樣的,也是一種受限制的線性表結構,它的限制是僅容許在標的一端進行插入,在標的另外一端進行刪除。

    簡單的說,採用該結構的集合,對元素的存儲有如下特色:

    • 先進先出(存進去的元素,要在他前面的元素依此取出後,才能取出該元素)。列如:火車過隧道,火車頭先從山洞出來,車尾後出來。

    • 隊列的入口,出口各佔一側。
  • 數組

    數組,Array,是有序的元素序列,數組在內存當中開闢一段連續的空間,並再此空間內存儲元素。列如:生活中的酒店當中的房間號是連續的,不間斷,有50個房間,從001--050每一個房間都有固定的編號,經過編號就能夠快速找到酒店房間的住戶。

    簡單的說,採用此結構的集合,對元素取出有如下特色:

    <img src="image\137b3856-0ae2-4eb9-9d5a-45d387c60da2.jpg" style="zoom:20% ;" />

    • 查找元素塊,經過索引,能夠快速的訪問到指定位置的元素。

    • 增刪元素慢。

    <img src="image\Snipaste_2020-12-02_15-51-23.png" title="style" style="zoom:80%;" />

    1. 指定索引位置增長元素 :須要建立一個新數組,將指定的新元素存儲到指定的索引位置,再把原數組元素根據它原來的索引,賦值到新數組對應的索引位置。
    2. 指定索引位置刪除元素:須要建立一個新數組,把原數組的元素根據索引,複製到新數組對應的索引位置,原數組中的指定索引元素複製到新數組當中。

鏈表結構

  • 鏈表,linked list,由一系列結點node(鏈表當中的每個元素稱爲節點)組成,節點能夠在運行時動態生成。每一個節點包含兩個部分;存儲數據元素的數據域;用來存儲下一個節點的指針域。咱們常說的鏈表結構有單向列表和雙向鏈表

    鏈表對元素的存取的特色

    • 多個節點之間,經過地址進行鏈接。好比:多我的玩丟手絹,每一個人右手拉住下一我的的左手,上一我的的左手拉着該人的右手,以此類推,多我的就被鏈接起來了。

    • 查詢元素比較慢:想要查找某個元素,須要經過鏈接的節點,依此向後查詢指定的元素。

    • 刪除元素比較快:
    1. 增長一個元素:只須要修改鏈接下一個元素的地址便可。

    2. 刪除一個元素:只要修改鏈接下一個元素便可。
  • 鏈表結構的特色

    查詢慢:鏈表結構的地址不是連續的,每次查詢元素,都必須從頭開始查詢。

    增刪快:鏈表結構中,對

紅黑樹

  • 二叉樹: binary tree ,每一個節點數不超過2的數(tree)

    簡單的理解,就是相似於咱們生活中的數的結構,只不過每一個節點上最多隻能有兩個子節點。

    頂上的節點稱爲根節點,兩邊的稱爲左子樹,右子樹

  • 紅黑樹的約束:

    1. 節點能夠是紅色的也能夠是黑色的
    2. 根節點是黑色的
    3. 葉子節點(空節點)是黑色的
    4. 每一個紅色節點的子節點都是黑色的
    5. 任何一個節點到其每個葉子節點的全部路徑上的黑色節點數是相同的
  • 紅黑樹的特色:

    查詢速度很是快,趨近於平衡樹,查找葉子元素最小和最大不能超過2倍。

相關文章
相關標籤/搜索