對於漫長的編程之路我只是一個路人,隨手撿起的石子我會扔到道路兩旁,摘下的花兒我會同人分享,遇見的泥濘坑窪我也願意同你訴說。
今天開始學習數據結構,而後逐步漸入佳境,希望你同我一樣進步。
個人喜歡比較庸俗的理解,方便記憶,語言粗鄙,還望見諒。
理解
首先理解“數據結構”的字的表面意思:
數據在計算機程序中,是可以被計算機程序識別、存取、和加工處理的符號、字符、圖形、圖像、聲音、視頻信號等一類的表示。
而結構,在生活中,就像一座房子,都有它自身的構造,一個公司也會有它相應的制度結構,那些都是人們在漫長歲月中想出來的。
所以數據結構,就是數據的結構,也可以說成是數據的組織形式,在我的理解中,即可以有千變萬化種結構,這樣的結構可能是常見的你我都可以見到的表格結構,抑或不太容易理解的樹形結構。都可以在每個地方存放讀取數據,以方便數據的更改、存取、計算。
分類
如果非要分類,那數據結構可以分成數據的邏輯結構、物理結構(存儲結構)、以及運算。
邏輯結構:集合結構、線性結構、樹形結構、圖結構(網狀結構)。
-
集合結構:元素只屬於一個整體集合,之間沒有關係。
-
線性結構:“一對一”關係。
-
樹形結構:“一對多“關係。
-
圖結構:“多對多”關係。
主要爲後面三種。
物理(存儲)結構:順序存儲結構、鏈式存儲結構、索引存儲結構、哈希(散列)存儲結構。
-
順序存儲結構:類似排序號,可以用數組來表示。
-
鏈式存儲結構:利用指針使得數據有一定的關係。
-
索引存儲結構:就好像目錄,輸入關鍵字可以查找出地址,從而得到數。
-
哈希存儲結構:同上面關鍵字,只不過通過哈希函數算出數據地址。
數據運算此處不加贅述。
算法
在計算機中,算法就是要把數據的結構展示出來的而編寫的一類程序。用這一類程序可以套入許多問題中,萬變而不離其宗。
判斷算法的好壞可以通過分析其時間複雜度和空間複雜度。
-
時間複雜度:程序運行從開始到結束所需要的時間。
-
空間複雜度:程序運行從開始到結束所需要的存儲量。
總結
初步瞭解到數據結構的概念、分類及實現方式。大致的輪廓已經擺在面前,今後的學習中,將學到許多新的數據結構及其算法,我要通過嘗試將它們一個一個實現,這樣纔可以在學習中進步。共同勉勵!