前言:今天(2015年9月14日)去一家公司面試(仍是霸面)C/C++開發工程師,沒有通過系統地複習就一後果,被虐了。爲了下次面試,因此如今趁着有時間從新學下數據結構(C語言版,嚴蔚敏著)。在這記錄學習資料,通常都是書上寫的。面試
一、什麼是數據結構算法
1.1定義:數據結構是互相之間存在一種或多種特定關係的數據元素的集合。數組
1.2四種基本結構:集合結構,線性結構,樹形結構,圖狀結構(網狀)。(關係)數據結構
1.3數據結構的形式定義:數據結構是一個二元組, Data_Struct=(D,S),其中D是數據元素的有限集,S是D上關係的有限集。學習
1.4數據的邏輯結構:數據結構中定義中的關係描述的是數據元素之間的邏輯關係;分兩種:線性結構(線性表{是一種有限序列,如數組和鏈式等},棧LIFO{限定僅在表尾進行插 入或刪除操做的線性表},隊列FIFO)和非線性結構(樹,圖)spa
數據的物理結構:數據結構在計算機的表示(映像)成爲數據的物理結構(存儲結構);分兩種:順序存儲結構,鏈式存儲結構,索引存儲,散列存儲。code
二、抽象數據類型ADT(Abstract Data Type)對象
2.1定義:是指一個數學模型及定義在該模型上的一組操做。定義僅取決於數據的邏輯特性。blog
2.2一個包含抽象數據類型的軟件模塊組成:定義,表示,實現三部分,三元組定義式以下:(D,S,P),其中D是數據對象,S是D上的關係集,P是對D的基本操做集。索引
抽象數據類型的格式:
1 ADT 抽象數據類型{ 2 數據對象:<數據對象的定義> 3 數據關係:<數據關係的定義> 4 基本操做:<基本操做的定義> 5 }ADT 抽象數據類型名
基本操做名格式
基本操做名(參數表)
初始條件:描述
操做結果:描述
三、算法及算法分析
3.1算法:有窮性,肯定性,可行性,輸入,輸出。
3.2算法效率的度量
時間複雜度:T(n)=O(f(n))
空間複雜度:S(N)=O(f(n))