數據結構單鏈表,雙鏈表,數組的底層實現原理

單鏈表:

鏈表是動態分配內存在內存中不連續,單鏈表只有一個向下的指針,指向下一個節點,單鏈表的定位時間複雜度是O(n),插入刪除的時間複雜度是O(1)node

雙鏈表:

鏈表是動態分配內容在內存中不連續,單雙鏈表一致,雙鏈表有兩個指針prov,next ,prov指向上一個節點,next指向下一個節點,理論上一樣的數據量雙向鏈表的查詢速度比單鏈錶快,雙向鏈表能夠使用二分查找法,最多查找一半的元素就可獲得目標,單鏈表須要遍歷整個鏈表對象。數組

數組:

數組靜態分配內存,在內存中連續指針

 

數組的優勢

  • 隨機訪問性強(經過下標進行快速定位)
  • 查找速度快

數組的缺點

  • 插入和刪除效率低(插入和刪除須要移動數據)
  • 可能浪費內存(由於是連續的,因此每次申請數組以前必須規定數組的大小,若是大小不合理,則可能會浪費內存)
  • 內存空間要求高,必須有足夠的連續內存空間。
  • 數組大小固定,不能動態拓展

鏈表的優勢

  • 插入刪除速度快(由於有next指針指向其下一個節點,經過改變指針的指向能夠方便的增長刪除元素)
  • 內存利用率高,不會浪費內存(能夠使用內存中細小的不連續空間(大於node節點的大小),而且在須要空間的時候才建立空間)
  • 大小沒有固定,拓展很靈活
  • 不須要初始化容量,能夠任意加減元素
  • 添加或者刪除元素時只須要改變先後兩個元素結點的指針域指向地址便可,因此添加,刪除很快

鏈表的缺點

  • 不能隨機查找,必須從第一個開始遍歷,查找效率低
  • 由於含有大量的指針域,佔用空間較大
相關文章
相關標籤/搜索