常用的數據結構與算法一

                                          常用的數據結構與算法一

數據結構:數據之間相互存在的一種或者多種特定關係的元素的集合

1 數據之間的邏輯結構 : 集合結構;線性結構;樹形結構;圖形結構

                     物理結構【存儲結構】:順序存儲結構; 鏈式存儲結構

一 常用的數據結構有:

    數組,字符串【array String】

    鏈表【linked-list】

    棧【Stack】

    隊列 【Queue】

    雙端隊列【deque】

    樹【tree】

     數組優缺點:

     優點:   1 構建數組簡單

                   2 查找速度快   能讓我們在O(1)的時間裏根據數組的下標index查詢某個元素

     缺點:   1 構建數組必須分配一段連續的空間

                   2 判斷某個元素是否存在需要遍歷整個數組,耗費O(n)的時間(n是元素的個數)

                   3 刪除個添加某個元素時 同樣耗費O(n)的時間

   鏈表的組成結構:https://blog.csdn.net/xuwb123xuwb/article/details/105435213

    鏈表通常由一連串節點組成,每個節點包含該節點的數據和指向上一節點或者下一節點的引用

   

    單鏈表和雙鏈表

    單鏈表:鏈表中的每個元素實際上是一個單獨的對象,而所有對象都通過每個元素中的引用字段鏈接在一起。

    雙鏈表:與單鏈表不同的是,雙鏈表的每個節點中都含有兩個引用的字段

    鏈表的優缺點:

    優點:1 鏈表能靈活的分配內存空間

               2 能在O(1)時間內刪除或者添加元素,前提是該元素的前一個元素已知,當然也取決於是單鏈表還是雙鏈表,在雙鏈表中如果已知該元素的後一個元素,同樣可以在O(1)時間內刪除或者添加該元素

     缺點:1不像數組能通過下標迅速讀取元素,每次都要從鏈頭開始一個一個讀取

                2 查詢第K個元素需要O(k)時間

    應用場景:如果要解決的問題裏邊需要很多快速查詢,鏈表可能並不合適;如果遇到的問題中,數據的元素個數不確定,而且需要經常進行數據的添加和刪除,那麼鏈表會比較合適。而如果數據元素大小確定,刪除插入的操作並不多,那麼數組可能更合適。

 

   

       

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章