1. 程式人生 > >『嗨威說』數據結構 - 第二章學習內容小結

『嗨威說』數據結構 - 第二章學習內容小結

.com 循環鏈表 程序設計 單元 tar 自己 大牛 http 理由

 本文內容:

  1. 本章內容的小結
  2. 完成作業或實踐時解決困難的經驗分享
  3. 參考資料、說明推薦理由及列出相關鏈接(或書目名稱,具體頁碼)
  4. 目前學習過程中存在的困難,待解決或待改進的問題
  5. 接下來的目標

一、本章內容小結:

  (1)順序表

    順序表一般表現為數組,使用一組地址連續的存儲單元依次存儲數據元素

    (1)長度固定,必須在分配內存之前確定數組的長度,當然你可以使用vector容器來實現動態存儲。

    (2)存儲空間連續,即允許元素的隨機訪問。

    (3)存儲密度大,內存中存儲的全部是數據元素。

    (4)要訪問特定元素,可以使用索引訪問,時間復雜度為O(1).

    (5)要想在順序表中插入或刪除一個元素,都涉及到之後所有元素的移動,因此時間復雜度為O(n).

    註解:每次擴容的時候,都需要將舊的數據全部復制一份,會影響效率。不過實際上使用順序表比鏈表的效率高

  (2)鏈表

    表中的每個節點都保存有指向下一個節點的指針,所有節點串成一條鏈。根據指針的不同,還有單鏈表、雙鏈表和循環鏈表的區分。

技術分享圖片

    單鏈表是只包含指向下一個節點的指針,只能單向遍歷。

    雙鏈表即包含指向下一個節點的指針,也包含指向前一個節點的指針,因此可以雙向遍歷。

    由於鏈表是使用指針將節點連起來,因此無需使用連續的空間,它具有以下特點:

    (1)長度不固定,可以任意增刪。

    (2)存儲空間不連續,數據元素之間使用指針相連,每個數據元素只能訪問周圍的一個元素(根據單鏈表還是雙鏈表有所不同)。

    (3)存儲密度小,因為每個數據元素,都需要額外存儲一個指向下一元素的指針(雙鏈表則需要兩個指針)。

    (4)要訪問特定元素,只能從鏈表頭開始,遍歷到該元素,時間復雜度為O(n) 。

    (5)在特定的數據元素之後插入或刪除元素,不涉及到其他元素的移動,因此時間復雜度為O(1)。

    (6)雙鏈表還允許在特定的數據元素之前插入或刪除元素。

    註解:鏈表的耗時大約是順序表的 4倍左右。因為數組只需要很少的幾次大塊內存分配,而鏈表則需要很多次小塊內存分配,內存分配操作相對是比較慢的,因而大大拖慢了鏈表的速度。這也是為什麽會出現內存池。

二、完成作業或實踐時解決困難的經驗分享

  推薦在博客園上關註一些技術大牛博主,遊覽他們的博文進行自學提升自我價值,多多百度或谷歌,可以在公眾號上關註一些不錯的技術分享者。

三、參考資料、說明推薦理由及列出相關鏈接(或書目名稱,具體頁碼):

  推薦大佬博客:

    https://www.cnblogs.com/Roni-i/

    https://www.cnblogs.com/AlvinZH/category/993446.html

四、目前學習過程中存在的困難,待解決或待改進的問題

  擔任多重職位、多個社團、多個兼職,在平衡自己的課外時間和學習時間上存在問題,需要不斷調整自我發展情況,退出一些已對自己無提升價值的社團。

  關於課內的困難:這個學期的課本上的代碼又很多都是偽代碼,希望老師能夠拿一種具體語言來操作加深我們對概念的理解。

五、接下來的目標:

  (1)準備三月底的程序設計天梯賽,學習各類算法

  (2)初步入門自然語言模型建立,幫助樹蛙項目組完成數據流、模型的搭建。

  (3)深入學習後期特效技術

『嗨威說』數據結構 - 第二章學習內容小結