数据结构的基本概念和抽象数据类型
1、基本概念和術(shù)語
數(shù)據(jù):是對客觀事物的符號表示。
數(shù)據(jù)元素:數(shù)據(jù)的基本單位,一個數(shù)據(jù)元素可由若干個數(shù)據(jù)項組成,數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位
數(shù)據(jù)對象:性質(zhì)相同的數(shù)據(jù)元素的集合是數(shù)據(jù)的一個子集
數(shù)據(jù)結(jié)構(gòu):相互之間存在一種或多種特定的關(guān)系的數(shù)據(jù)元素的集合
4種基本結(jié)構(gòu):
1.線性結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一個對一個的關(guān)系
2.樹形結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一個對多個的關(guān)系
3.圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在多個對多個的關(guān)系
4.集合:結(jié)構(gòu)中的數(shù)據(jù)元素之間除了“同屬于一個集合”的關(guān)系之外別無關(guān)系
數(shù)據(jù)結(jié)構(gòu)的形式定義為:數(shù)據(jù)結(jié)構(gòu)是一個二元組
Data_Structure=(D,S):D為數(shù)據(jù)元素的有限集,S是D上關(guān)系的有限集
邏輯結(jié)構(gòu):結(jié)構(gòu)定義中的關(guān)系描述
存儲結(jié)構(gòu)/物理結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)在計算機中的表示,包括數(shù)據(jù)元素的表示和關(guān)系的表示
計算機中最小單位:位
數(shù)據(jù)元素:若干個位組合起來形成的一個串(元素/節(jié)點可以看成數(shù)據(jù)元素在計算機中的一個映射)
數(shù)據(jù)域:當數(shù)據(jù)元素由若干數(shù)據(jù)項組成時,位串中對應于各個數(shù)據(jù)項的子位串為數(shù)據(jù)域
數(shù)據(jù)元素在計算機中的表示方法:順序映像和非順序映像
順序映像:借助元素在存儲器中的相對位置來表示數(shù)據(jù)元素之間的邏輯關(guān)系
非順序映像:借助指示元素存儲地址的指針來表示元素之間的邏輯關(guān)系
數(shù)據(jù)元素在計算機中的存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)
數(shù)據(jù)類型是一個值的集合和定義在這個值集上的一組操作的總稱。例如:整型變量,其值集為某個區(qū)間上的整數(shù),定義在其上的操作為加減乘除和取模等算術(shù)運算
若按其值的不同特性,可以分為下列三種類型:
原子類型:屬原子類型的變量的值是不可分割的。例如:C語言中的基本類型(整型、實型、字符型和枚舉類型)、指針類型和空類型
結(jié)構(gòu)類型:結(jié)構(gòu)類型的值是由若干成分按某種結(jié)構(gòu)組成的,因此是可以分解的,并且它的成分可以是非結(jié)構(gòu)的,也可以是結(jié)構(gòu)的。
固定聚合類型:屬于該類型的變量,其值由確定數(shù)目的成分按某種結(jié)構(gòu)組成
可變聚合類型:構(gòu)成可變聚合類型“值”的成分的數(shù)目不確定
和數(shù)據(jù)結(jié)構(gòu)的形式定義相對應,抽象數(shù)據(jù)類型可用以下三元組表示:
(D,S,P)/D表示數(shù)據(jù)對象,S是D上的關(guān)系集,P是對D的基本操作集。定義抽象數(shù)據(jù)類型:
ADT?抽象數(shù)據(jù)類型名{
數(shù)據(jù)對象:<數(shù)據(jù)對象的定義>
數(shù)據(jù)關(guān)系:<數(shù)據(jù)關(guān)系的定義>
基本操作:<基本操作的定義>
}ADT?抽象數(shù)據(jù)類型名
基本操作的定義格式:
基本操作名(參數(shù)表)
??????初始條件:<初始條件描述>//執(zhí)行操作之前數(shù)據(jù)結(jié)構(gòu)和參數(shù)應該滿足的條件,若不滿足則操作失敗返回出錯信息
??????操作結(jié)果:<操作結(jié)果描述>//操作正常完成之后數(shù)據(jù)結(jié)構(gòu)的變化和應返回的結(jié)果
基本操作有兩種參數(shù):賦值參數(shù)只為操作提供輸入值
?????????????????????????????????引用參數(shù)以&打頭,除可提供輸入值外,還將返回操作結(jié)果
例:
ADT Triplet{
數(shù)據(jù)對象:D={e1,e2,e3|e1,e2,e3∈ElemSet(定義了關(guān)系運算的某個集合)}
數(shù)據(jù)關(guān)系:R1={<e1,e2>,<e2,e3>}
基本操作:
IsAscending(T)
初始條件:三元組T已存在。
操作結(jié)果:如果T的3個元素按升序排列,則返回1,否則返回0.
}ADT Triplet
多邊數(shù)據(jù)類型:其值的成分不確定的數(shù)據(jù)類型
2、抽象數(shù)據(jù)類型的表示與實現(xiàn)
抽象數(shù)據(jù)類型通過固有數(shù)據(jù)類型來表示和實現(xiàn),即利用處理器中已存在的數(shù)據(jù)類型來說明新的結(jié)構(gòu),用已經(jīng)實現(xiàn)的操作來組合新的操作。
C語言的一些核心子集:
預定義常量和類型
數(shù)據(jù)結(jié)構(gòu)的表示(存儲結(jié)構(gòu))用類型定義(typedef)描述
自定義函數(shù)
賦值語句
選擇語句
循環(huán)語句
結(jié)束語句
輸入輸出語句
注釋
基本函數(shù)
邏輯運算約定
3、算法和算法分析
算法的性質(zhì):有窮性,確定性,可行性,輸入,輸出
算法設計的要求:正確性,可讀性,健壯性,效率和低存儲量需求
算法效率的度量:
事后統(tǒng)計的方法(使用計算機內(nèi)部的計時功能)
事前分析估算:一個算法是由控制結(jié)構(gòu)(順序、分支和循環(huán)3種)和原操作(指固有數(shù)據(jù)類型的操作)構(gòu)成的,則算法時間由這兩者共同決定
總結(jié)
以上是生活随笔為你收集整理的数据结构的基本概念和抽象数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言EQU伪指令
- 下一篇: 汇编语言TEXTEQU伪指令