記得當年考研時,專業課就是資料結構和c++,當時為了準備考試,找來嚴蔚敏老師的那本經典的資料結構教材,將上面講到的演算法全部用c++實現了一遍,可惜當年部落格沒現在這麼流行,不然我也可以像guojing那樣,寫一些心得體會。
晚上再把那本書翻出來,很長時間不看了,已經有一層塵土了,隨手翻來,看著書裡曾經記錄的密密麻麻的筆記,讓人感懷不已。
這篇隨筆只是對資料結構的乙個大體上的溫習和回顧,所以只關心乙個問題,那就是:什麼是資料結構?
計算機軟體是伴隨著計算機硬體的發展來衍生出來的,那麼計算機軟體是用來做什麼的呢?我們平日裡寫的**所堆砌出來的乙個東西,它究竟有什麼用處呢?軟體就是用來使人們的生活更方便、更有效率,這就是我對軟體用途的理解。軟體將人們從那些大量重複工作的漩渦中解放出來,使他們可以有機會去做一些更有挑戰性、更能產生效益的工作,來進一步提高整個社會的財富創造能力。
如果想要軟體去解決問題,那麼就必須有一些數學模型來對待解決的問題進行抽象,最典型的就是前幾年一直很火的數學建模大賽,提出乙個問題,我們通過對其進行數學建模,來得到乙個近似的解決方案,通常都是乙個最優化的模型。但是現實中的問題要複雜的多,很多時候我們通過數學模型是無法對其進行抽象的,這時,我們就引出了資料結構。
現實中需要解決的問題具有以下幾個特點:1. 一般包括一些資料,這些資料可能是簡單的資料,例如員工的年齡、生日等;也可能是比較複雜的資料,例如員工本身,就是乙個由身高、體重、年齡、生日等一系列簡單資料所組成的複雜資料。2. 資料之間往往有聯絡,這種聯絡可能是一對一的、一對多的或者多對多的。3. 資料往往包含一些操作,就像整數之間可以進行加減乘除。
資料結構就是相互之間存在一種或多種特定關係的資料元素的集合。我們在平時的工作中還會碰到另外乙個很常見的概念:資料型別,它是指乙個值的集合和定義在這個值集上的一組操作的總稱。當我們說資料型別時,不要忘了它本身是包括了一組操作的。
下面我們繼續關注如何在計算機中使用資料結構,資料結構中提到的資料元素之間的關係分為邏輯和物理兩種情況。在邏輯上,主要體現為是一對
一、一對多還是多對多;在物理上,是指資料元素在儲存裝置中的儲存方式,分為順序映像和非順序映像兩種,順序映像就是指資料元素在記憶體中相鄰儲存,我們知道乙個元素的位置後,可以通過相對位置的方式來確定其他元素的位置,非順序映像是指元素之間借助指標來進行連線。
有了資料型別後,我們解決實際問題,還需要確定如何使用資料型別,也就是我們要確定演算法。演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令都表示乙個或多個操作。演算法有以下特徵:1. 有窮性;2. 確定性;3. 可行性;4. 輸入;5. 輸出。
對於乙個好的演算法,有以下要求:1. 正確性;2. 可讀性;3. 健壯性;4. 效率和低儲存,也就是時間和空間的最優化。
我們可以通過時間複雜度或者空間複雜度來對演算法的優劣進行判斷。
資料結構 什麼是資料結構?
緒論 其實,資料結構在計算機科學界至今沒有標準的定義。個人根據各自的理解的不同而有不同的表述方法 資料結構是資料物件,以及存在於該物件的例項合組成例項的資料元素之間的各種聯絡。這些聯絡可以通過定義相關的函式來給出。他將資料物件 data object 定義為 乙個資料物件是例項或值的集合 其實,究竟...
資料結構 什麼是資料結構
基本概念 資料 是對客觀事物的符號表示 資料元素 是資料的基本單位 資料物件 是性質相同的資料元素的集合,是資料的乙個子集 資料結構 是相互之間存在的一種或多種特定關係的資料元素的集合,資料元素相互之間的關係稱為結構。通常有下列四類基本結構 線性結構 樹形結構 圖狀結構和網狀結構 資料結構在計算機中...
資料結構 什麼是資料結構?
什麼是資料結構 1.資料結構的有關定義 1 資料結構 是帶有結構資料元素的集合 2 資料 是客觀事物的數值 字元以及能輸入機器且能被處理的各種符號的集合 編譯 鏈結 源程式 c 目標程式 obj 可執行程式 exe 3 資料物件 是性質相同的資料元素的集合 4 資料型別 一組性質相同的值的集合以及定...