### **數據結構是一門研究非數值計算程序設計中的操作對象,以及這些對象之間的關系和操作的學科。**
### 基本概念和術語
數據(data)–所有能輸入到計算機中去的描述客觀事物的符號的總稱
數據元素(data element)–數據的基本單位,也成結點(node)或記錄(record)
數據項(data item)–有獨立含義的數據最小單位,也成域(field)
~~~
三者之間的關系:數據>數據元素>數據項
例如:成績表>個人信息>學號、姓名、成績
~~~
數據對象(Data Object):相同特征元素的集合,是數據的一個子集
##### 例如:整數數據對象 N={0,1,2,3…}
##### 字母字符數據對象是集合C={‘A’,’B’,’C’,’D’,….’a’,’b’,’c’,’d’…}
數據結構(data Structure)是相互之間存在一種或多種特定關系的數據元素的集合。(數據結構是帶“結構”的數據元素的集合,“結構”就是指數據元素之間存在的關系。)
### 數據結構的兩個層次:
邏輯結構——數據元素間抽象化的相互關系,與數據的存儲無關,獨立于計算機,它是從具體問題抽象出來的數學模型。*
存儲結構(物理結構)
數據元素及其關系在計算機存儲中的存儲方式。
邏輯結構 劃分方法一
(1)線性結構—
有且僅有一個開始和一個終端結點,并且所有結點都最多只有一個直接前驅和一個后驅。
例如:線性表、棧、隊列、串
(2)非線性結構—
一個結點可能有多個直接前驅和直接后繼。
例如:樹、圖
劃分方法二
集合—-數據元素間除“同屬于一個集合”外,無其他關系
線性結構—一個對一個,如 線性表、棧、隊列
樹形結構—-一個對多個,如 樹
圖形結構–多個對多個,如 圖

存儲結構分為:
順序存儲結構—–借助元素在存儲器中的相對位置來表示數據元素間的邏輯關系
鏈式存儲結構—-借助指示元素存儲地址的指針表示數據元素間的邏輯關系
數據類型
定義:在一種程序設計語言中,變量所具有的數據種類
~~~
例如:基本數據類型:char int float double void
構造數據類型:數組、結構體、共用體、文件
~~~
### 抽象數據類型(ADTs:Abstract Data Types)
- **定義: 用戶進行軟件系統設計時從問題的數據模型中抽象出來的邏輯數據結構和邏輯數據結構上運算,而不考慮計算機的具體存儲結構和運算的具體實現算法。**
*抽象數據類型可以用三元組表示:*
ADT = (D,S,P)
D:數據對象
S:D上的關系集
P:D上的操作集
#### ADT定義格式:
~~~
ADT 抽象數據類型名{
數據對象:<數據對象的定義>
數據關系:<數據關系的定義>
基本操作:<基本操作的定義>
} ADT抽象數據類型名
~~~