從問題入手比如人狼羊菜過河問題。 問題抽象:首先需要分析和抽象問題的需求和限制,簡歷問題模型。 目的:把人狼羊菜運到對岸 條件:
資料抽象:接下來我們需要恰當的資料結構來描述這個數學模型。 簡單排列組合我們發現系統一共有16種狀態(包括空狀態),但是按照條件我們能夠踢出:狼羊,人菜(與前者互補狀態),羊菜,人狼,狼羊菜,人這6種狀態。 那麼問題就轉化為乙個圖模型,尋找一條路徑使得起始狀態人羊狼菜轉換為空狀態,就獲得問題的解。
資料結構:接著我們需要思考怎麼用計算機表示這個模型,可以採用相鄰矩陣。
演算法抽象:接下來我們需要考慮怎麼實現這演算法,求圖的最短路徑問題。
這樣我們就能夠求解這個問題。
那麼什麼是資料結構? 資料結構可以說是:邏輯+儲存+運算。 從邏輯上分為:
非線性結構
當然他們之間存在包含關係:圖≥樹≥二叉樹≥線性表 儲存結構則是邏輯結構到物理結構的對映。
但是隨著模組化思想的發展,我們希望隱藏運算的細節和內部的資料結構,只留下邏輯與運算介面以實現軟體復用,隨意誕生了抽象資料型別(adt)。比如c++的各種資料結構模板庫。 抽象資料型別實現資料元素定義及資料之間的關係以及資料操作的封裝。 那麼怎麼取實現adt呢,我們需要先定義邏輯結構(即資料物件及其關係,再定義運算也即函式)
資料結構與演算法概述
研一結束了,馬上要進入研二的生活了。接下來就要進入了找工作的階段。在網上查詢了各種找工作的面經,發現資料結構是應聘軟體行業必考的內容之一,並在資料結構在對自己的軟體設計水平的提高也有很大的幫助,所以從今天開始將進行資料結構的學習。在學習一樣東西之前,先要明白其含義。資料結構的定義如下 我們如何把現實...
資料結構與演算法概述
資料型別 程式語言中的資料型別是指具有預定義值得乙個資料集合,常見的資料型別有 整數型,浮點型,字串,字元等。一般有兩種資料型別 系統定義的資料型別 基本資料型別 使用者自定義的資料型別 使用者自定義的類,可以將系統定義的資料型別進行組合封裝成使用者需要的資料型別 class student 資料結...
資料結構與演算法概述
資料結構與演算法概述 按照不同的角度,資料結構可分為邏輯結構和物理結構。邏輯結構 集合結構 線性結構 樹形結構 圖形結構 物理結構 順序儲存結構 鏈式儲存結構 演算法 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作 演算法的基本特性 輸入 輸出 有...