2010年4月5日 星期一

新觀念的資料結構首先披露 : 計算機概論(附錄A)

新觀念的資料結構將首先節錄並披露於 計算機概論-探索未來2011的附錄A
再度披露於 C語言初學指引(第四版)的第12,13章

1.2 何謂資料抽象化

在本書的開頭,首先我們介紹何謂資料抽象化(Data Abstraction)?以及它與資料結構的關係。
資料結構事實上就是資料抽象化(Data Abstraction)的一種結果,而資料抽象化包含了下列兩大項目:
☆ 資料的定義與組識方式:亦即「資料」的抽象化。
☆ 和資料有關的運算操作:亦即「運算」的抽象化。
在真實世界中,許多個體都是資料抽象化的結果,例如,一架飛機,代表的其實是許多個體與功能的集合,其內的個體包含座椅、引擎、操縱桿等等,甚至在這些個體被組裝後,它還具備了某些特性(例如重量、載重量等),也可能具備某些功能(例如引擎點火、起飛、降落、逃生等)。換句話說,在真實世界中,當我們提及『飛機』時,事實上,是提到「眾多特定個體與功能的集合」。因此,『飛機』事實上是資料抽象化後的名詞,而通常抽象化的目的是為了溝通方便。

圖1-1 當不使用資料抽象化,會導致溝通困難


圖1-2 即便使用資料抽象化,也必須雙方了解該名詞

由圖1-1與1-2中,您可以發現,資料抽象化及學習各名詞的重要性。舉例來說,假設某一位資深的軟體設計師告訴您,二元搜尋樹可以解決此一搜尋問題,對於沒有學過資料結構與學過資料結構的人而言,可能會有下列不同的反應。

圖1-3 個人的知識背景將導致不同的結果

因此,學習資料結構的最大用意在於了解各抽象化後之名詞(各種資料結構)的實質意義,例如二元搜尋樹是一種資料結構,它是一個抽象化後的名詞,背後包含了以某種順序配置資料等的詳細意義,而我們應該藉由此課程了解它。