數據結構的定義: 我們怎么把現實中大量而復雜的問題,進行抽象建模(model),以特定的數據類型和特定的存儲結構把它們存儲到計算機中,從而可以實現某些操作,比如查找和排序,實現這些操作的步驟就稱之為算法,算法就是對特定的數據類型進行某些操作的過程,從而達到某種目的。
比如我們要對整個班級內的所有學生成績進行排序,這是一個很現實的問題,怎樣才能用計算機進行實現。首先我們要進行抽象建模,要記錄每一個學生的姓名和成績,那就要用對象,這個對象定義兩個屬性name, score, 然后是所有的學生,我們可以用數組進行存儲,把所有的對象都放到一個數組中。存儲完成后,我們就要進行排序,如何對數組的對象進行排序的問題,這就是算法的實現問題。但是如果學生的數據量特別大的話,如高考中,山東和河南的考生數量,那用數組進行存儲可能就會有問題,因為數組是一片連續的內存空間, 有可能內存空間不足,那就無法進行存儲了,這時可以考慮使用鏈表,因為鏈表中的元素是用指針進行鏈接的,只要有空間進行分配就可以了,空間不需要連續,可以分散在內存中的各個角落。
還有一個現實中問題,就是我們經常使用的地圖,它是怎么知道這兩個點之間距離是最短的,它是怎么規划路線的? 首先要進行抽象,現實中的地點比如公交站點,它是怎么存放到地圖中的?用什么樣的數據結構存儲到計算機中?單個點怎么存儲,所有的點又怎么存儲? 這就要用到數據結構中的圖了。然后計算兩個點之間的距離了,這又是具體的算法了。
從上面的例子,可以看出,數據結構主要研究的是數據存儲,現實中大量而復雜的數據,怎么存放到計算機中,單個數據怎么存儲?所有的單個數據又怎么整合到一起? 在數據存儲的過程中,有可能有多種實現方式,我們還要決定使有哪一種數據結構,使存儲更為有效。
數據存儲完成后,還要進行操作,如果只把數據存儲起來,不進行操作,那也沒有什么作用,因為根本得不到任何有效信息。對數據的操作就是算法,我們怎么才能從所有的數據中找出它的最小值,計算出它的平均數等等。
