關於數據結構,能夠大體分爲如下兩類:程序員
在上面這四種結構的基礎上,再進行組合排列,就能夠表示整個宇宙了。
web
任何類型的數據,最終都須要存儲在內存中。根據內存中存儲的數據是否連續,能夠分爲兩種存儲方式:算法
靜態操做:查找和修改元素。操做完成後數據總體大小不變。
動態操做:增刪元素。操做完成後數據總體大小發生變化。編程
最多見的順序存儲的數據類型就是數組。數組中的多個元素在邏輯上和物理上都是相鄰的,直接經過下標訪問。數組
最基本的鏈式存儲的數據類型是鏈表。鏈表中的每一個元素,除了保存數據外,還保存指向下一個元素的指針。要訪問某個位置的元素,必須從首元素開始順着指針一個個找下去。數據結構
程序的本質 = 算法 + 數據結構編程語言
做爲野生程序員,學過幾種編程語言,可是每次想深刻研究 Linux 和 MySQL 以及 Redis 等經常使用工具,都會有種無力感。業務代碼能夠敲的很溜,可是若是搞不懂底層原理,那始終只是一個碼農,最可能是熟手碼農而已。svg
任何牛逼的項目,本質上都是對內存中數據的操縱。數據組織結構良好,才能方便基於各類算法對其進行操縱。而算法有不少,選擇最佳方案能夠成倍的提升效率。工具