計算機速成課 第十四集 數據結構

1. 緣起

  • 在處理的數據的時候,不想讓數據像大學宿舍裏一樣混亂
  • 希望的數據是結構化的,方便讀取
  • 因此,科學家發明了「數據結構」

2. 分類

  • 數組

    • 名稱:也叫列表,或向量
    • 特點:數組的值一個一個連續存在內存裏
    • 下標:爲了拿到數組中的某個值,我們需要指定一個下標
    • 庫函數
      • 排序函數:只要傳入數組,就會返回排序後的數組,不需要寫排序算法
  • 字符串

    • 其實就是字母、數字、標點符號等,組成的數組
  • 矩陣

    • 數組的數組
  • 結構體

    • 概念:多個變量打包在一起
    • 特點:可以創造更復雜的數據結構,消除這些限制
    • 舉例
      • 節點:存一個變量,一個指針
      • 指針:是一種特殊變量,指向一個內存地址,因此得名
  • 鏈表

    • 特點1:是一種靈活的數據結構,能存很多個節點
    • 特點2:很容易重新排序,兩端縮減,分割,倒序等
    • 特點3:很多複雜數據結構都用鏈表,最出名的是隊列和棧
    • 靈活性是通過每個節點 指向 下一個節點實現的
    • 循環鏈表:最後一個結點指向頭結點,形成一個環
    • 當程序員使用鏈表時,很少看指針具體指向哪裏,而是用鏈表的抽象模型,更容易看懂
  • 隊列

    • 像郵局排隊,誰先來就排前面,這叫先進先出(FIFO)
    • 後進先出(LIFO)
    • 舉例:鬆餅
    • 最高的節點叫「根節點」
    • 根節點下的所有節點,都叫「子節點」
    • 任何子節點的直屬上層節點,叫「母節點」
    • 沒有任何「子節點」的節點,也就是「樹」結束的地方,叫「葉節點」
    • 重要性質:「根」到「葉」是單向的
    • 特點1:數據隨意連接,包括循環
    • 特點2:可以用有多個指針的節點表示,因此沒有「根」、「葉」、「子節點」、「父節點」這些概念,可以隨意指向

總結

  • 不同數據結構適用於不同場景,選擇正確數據結構會讓工作更簡單,所以花時間考慮用什麼數據結構是值得的
  • 大多數編程語言自帶了預先做好的數據結構,程序員不同浪費時間從零寫,時間可以花在更有趣的事情上
    • C++ 有「標準模板庫」
    • Java 有 「Java 類庫」
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章