演算法與資料結構——2.資料結構基本概念
資料結構基本概念:
資料結構是一門討論“描述現實世界實體的數學模型(非數值計算)及其上的操作在計算機中如何表達和實現”的學科
是資料物件在計算機中的組織方式
(圖表,影象,聲音等屬於非數值
資料物件必定與一系列加在其上的操作相關聯
完成這些操作所用的方法就是演算法
數值計算的程式設計問題:
- 結構靜力分析計算可用:線性代數方程組
- 全球天氣預報:環流模式方程(球面座標)
計算機應用系統的兩個關鍵問題:
- 表示:物件及其關係在計算機中的表示。只有物件及其相互關係已儲存在計算機中,才能被進一步處理
- 操作:對物件進行處理,訪問
用例1 :超市商品管理
對商品的各種資訊如何加以組織和儲存
資料物件:商品
關係:線性
用例2:計算機對弈
操作物件:格局(棋盤狀態)
元素間的關係:樹(由比賽規則決定)
相關名詞:
資料:資料是描述客觀事物的數值、字元以及能輸入機器且能被處理的各種符號集合。
或者說資料是對客觀事物的符號表示,在電腦科學中指所有能輸入到計算機中並被計算機程式處理的符號的總稱。
資料包括:整型、實型、布林型、影象、字元、聲音等一切可以輸入到計算機中的符號集合。
例如:C語言的源程式,目標程式,可執行程式都可以認為是資料
資料元素:是組成資料的基本單位,是資料集合的個體在計算機程式中通常作為一個整體進行考慮和處理
例如整個學生資訊表可看作一個數據元素
一個數據元素可由多個資料項
資料物件:性質相同的資料元素的集合,是資料的一個子集。
資料結構:是指相互之間存在一種或多種特定關係的資料集合,是帶有結構的資料元素的集合,它指的是資料元素之間的相互關係,即資料的我組織形式。
補充:
資料元素相互之間的關係稱為結構。
結構分為四種基本結構:(下方會有資料的邏輯結構與儲存結構的詳解,此處簡要概括)
(1)集合:“同屬一個集合”,跟數學中的集合概念是一樣的
(2)線性結構:結構中的資料元素之間存在一個對一個的關係。例如表結構
(3)樹形結構:結構中的資料元素之間存在一個對多個的關係。
(4)圖狀結構或網狀結構:結構中的資料元素之間存在多個對多個的關係。
資料結構的形式定義為:資料結構是一個二元組。
Data_Structure=(D,S)
其中,D是資料元素的有限集,S是D上關係的有限集。
資料型別:是一組性質相同的值集合以及定義在這個值集合上的一組操作的總稱。
例如:在高階語言中,整形型別的取值範圍為:-32768~+32767,運算集合為加、減、乘、除,取模,即+、-、×、/、%。
資料型別分為原子型別和結構型別。
- 原子型別:其值不可分解。如C語言中的標準型別(整型、實型、字元型)
- 結構型別:其值是由若干成分按某種結構組成,因此是可以分解的,並且它的成分可以是非結構的,也可以是結構的。
講解:一個學生的資訊可以包含姓名性別等,這就是結構型別
補充:因為指標是隻是元素儲存地址,而地址就是一個值,故而指標是原子型別。
資料抽象與抽象資料型別:
抽象資料型別:指基於一類邏輯關係的資料型別以及定義在這個型別之上的一組操作
簡言之,一個數學模型以及定義在該模型上的一組操作。
抽象資料型別確定了一個模型,但將模型的實現細節隱藏起來;它定義了一組運算,但將運算的實現過程隱藏起來
用例1.
可以將整型看作一個抽象資料型別,它的取值範圍、運算集合加、減、乘、除都是確定的,實現細節被隱藏的
用例2.
線性表的抽象資料型別的描述
抽象資料型別實現的三種方法
(1)傳統的面向過程的程式設計,例如朴樹
(2)“包”、“模型”的設計方法
(3)面向物件程式設計
抽象資料型別的特性
(1)資料抽象:用ADT(抽象資料型別Abstract Data Type)描述程式處理的實體時,強調的是其本質的特徵、其所能完成的功能以及它的外部使用者的介面(即外界使用它的方法)
(2)資料封裝:將實體的外部特性和其內部實現的細節分離,並且對外部使用者隱藏其內部實現細節。比如電視機,能用遙控器進行操作控制,而至於電視機顯像原理等,不需要理解。
資料的邏輯結構和儲存結果
邏輯結構:資料元素之間的邏輯關係的描述
Data_Structure=(D,S)
其中,D是資料元素的有限集,S是D上關係的有限集。
四種基本結構:
集合結構、線性結構、樹形結構、圖狀結構
集合結構:結構中的資料元素之間除了同屬於一個集合的關係外,無任何其他關係。結構中的資料元素之間除了同屬於一個集合的關係外,無任何其他關係。
線性結構:結構中的資料元素之間存在一個對一個的關係。例如表結構
將a1、a2、a3……看做一個個節點
樹形結構:結構中的資料元素之間存在一個對多個的層次關係。
例如:一個學校的我組織結構圖、家譜族譜、目錄與子目錄
圖狀結構或網狀結構:結構中的資料元素之間存在一個對多個的任意關係。
例如:城市的旅遊交通關係
邏輯結構分佈:
儲存結構:邏輯結構在計算機中的儲存映像,是邏輯結構在計算機中的實現,它包括資料元素的表示和關係的表示。
資料元素的表示:用若干個二進位制“位串”表示 0101……
資料元素之間的關係在計算機中的表示方法:
(1)順序映像(順序儲存結構):邏輯關係與位置關係都是緊鄰的
(2)非順序映像(非順序儲存結構):不是按照邏輯順序,零散的分佈
給a1增添a2的地址,給a2增添a3的地址,以此類推
head頭指標,Null作結束
運算集合:在計算機中進行運算操作的集合。
例如在資訊表中查詢,插入,修改,刪除等(增刪改查)
總結:
按照某種邏輯關係組織起來的一批資料,按一定的映像方式把它存放在計算機儲存器中,並在這些資料上定義了一個運算的集合,這叫做資料結構。