資料有各種形式和大小,但通常它們可以以相同的方式來組織。比如,設想有一張清單,上面列出了需要做的事情,配方中的成分列表,某門課程的閱讀清單。儘管每種都包含不同型別的資料但它們包含的資料都以一種相似的方式進行組織:列表。列表是一種簡單的資料結構。當然,同樣還有許多其他類似的方法來組織資料。在電腦科學領域,一些最常用來組織資料的方式有:鍊錶,堆疊,佇列,集合,雜湊表,樹,堆,優先順序佇列,圖。本書將討論所有上述的資料結構。使用資料結構的三個原因是:效率,抽象,重用性。 效率
資料結構組織資料的方式使得演算法變得更加高效。例如,考慮一下我們該如何組織資料以對其進行檢索。最簡單的方式是將資料存放到陣列中,然後遍歷其中每乙個元素直到找到我們需要的元素為止。然而這種方式確是低效的,因為在很多情況下我們需要遍歷陣列中的每乙個元素才行。通過使用另一種資料結構比如雜湊表(見第8章)或者二叉樹(見第9章)我們可以顯著的提高檢索的速度。抽象
資料結構使我們以一種更加容易理解的方式去看待資料。也就是說它們為解決問題提供了一層抽象概念。比如,要把資料存入乙個堆疊(見第6章),我們可以把精力集中在我們可以對堆疊做什麼操作上,例如壓棧和出棧,而不是實現每種操作的具體細節上。換句話說,資料結構使我們以不那麼「程式化」的方式去看待程式。
重用性
資料結構是可重用的,因為它們應該是模組化且上下文無關的。它們是模組化的因為每種資料結構都有各自指定的介面,也就是說我們只能通過定義的介面來訪問運算元據。資料結構是上下文無關的,因為它們能在任意環境或上下文中應用於任意一種型別的資料之上。在c語言裡我們通過使用指向void型別的指標的方式來管理任意型別的資料,而不是在資料結構內部維護乙份資料的私有拷貝。
當面對資料結構時,我們通常會想到特定的行為或者操作。例如,給定乙個鍊錶,我們會自然的想到插入,移除,遍歷和計算元素個數等操作。資料結構加上這些基本操作就稱為抽象資料型別(adt)。乙個抽象資料型別的操作就組成它的公共介面。抽象資料型別的公共介面精確地定義了我們可以對它做什麼。建立並遵守抽象資料型別的介面是絕對必要的,因為這會使我們能更好的管理程式的資料使得程式變得更容易理解也更容易維護。
ps:
資料結構 簡介
資料元素 是組成資料有一定意義的基本單位,比如乙個人的基本資訊包括姓名 性別 年齡等 資料物件 是性質相同的資料元素的集合,比如正整數資料物件n 資料結構 是資料的組織形式,即資料元素之間存在的一種或幾種特定關係 資料型別 是用來刻畫一組性質相同的資料及其上的操作。可以分為原子型別和結構型別。抽象資...
資料結構簡介
資料結構 是指相互之間存在一種或多種特定關係的 資料元素 的集合。聽起來是不是很抽象,簡單理解 資料結構就是描述物件間邏輯關係的學科。比如 佇列就是一種先進先出的邏輯結構,棧是一種先進後出的邏輯結構,家譜是一種樹形的邏輯結構!初學資料結構的時候很不理解為什麼有 棧 這個東西 佇列很容易理解 無論購物...
資料結構簡介
程式設計 資料結構 演算法。集合結構 資料間沒有對應關係 集 線性結構 資料間一對一的關係 表 樹形結構 資料間一對多的關係 樹 圖形結構 資料間多對多的關係 圖 順序結構 資料在儲存空間連續儲存 鏈式結構 資料在儲存空間不連續儲存 每一種具體資料儲存可以是兩種結構的組合,如陣列為順序線性儲存 鍊錶...