參考清華大學嚴蔚敏資料結構與演算法 適用於考研 & 求職本教程全部採用c語言實現
data struct ds --> 資料之間組織架構/結構
線性 :seqlist list stack queue string array
非線性:tree graph
1.1.1 資訊處理:計算機解決問題的大致步驟:
具體問題抽象成數學模型設計演算法編寫程式測試調整最終解答
1.1.2 資料結構(學科)一門研究非數值計算的程式設計問題中計算機的操作物件(資料)以及他們之間的關係和操作等的學科。
1.1.3 三方面研究內容1. 資料的邏輯結構
2. 資料的物理(儲存)結構
3. 資料操作實現的演算法
問題 *****》 數學模型 *****》程式設計實現
1.2.1 資料物件 vs 資料元素 vs 資料項資料物件:具有相同性質的資料元素的集合,是資料的乙個子集。
資料元素:資料的基本單位
資料項:乙個資料元素包含多個資料項 (最小單位)
1.2.2 結構結構:資料元素之間的關係
資料結構(data structure):相互之間存在一種或多種特定關係的資料元素的集合 也就是說資料結構是帶「結構」的資料元素的集合
1.2.3 資料結構的形式定義資料結構是乙個二元組: data-structure = (d, s) 其中d是元素的有限集,s是d上關係的有限集
1.2.4 邏輯結構 儲存結構(/物理結構)1. 資料元素之間的邏輯關係
邏輯結構有:集合,線性,樹,圖
2. 資料元素及其關係在計算機儲存器中的形式
物理結構:位(bit),位串,元素,資料域
順序映像 非順序映像
1.3.1 資料型別乙個值的集合和定義在這個值集上的一組操作的總稱
1.3.2 抽象資料型別adt : 指數學模型以及定義在其上的一組操作
adt triplet
資料關係:r1=
基本操作:
inittriplet(&t,v1,v2,v3)
操作結果:構造了三元組t,元素e1,e2和e3分別被賦以引數v1,v2,v3的值。
destroytriplet(&t)
操作結果:三元組t被銷毀。
---min(t,&e)
初始條件:三元組t已存在。
操作結果:用e返回t的3個元素中的最小值。
}adt triplet
1.4.1. 演算法基本概念
演算法:對特定問題求解步驟的一種描述,它是指令的有限序列,其中每條指令表示乙個或多個操作。
五大特性:確定性、有窮性、可行性、輸入、輸出
演算法與程式:
演算法是解決問題的過程
程式是某種程式語言對演算法的具體體現
區別: 演算法必須有窮,程式可以無窮
演算法必須正確,程式可以錯誤
演算法可以用偽**,程式語言描述,程式只能用程式語言編寫並編譯執行
1.4.2 演算法效率度量好演算法:正確、可讀、健壯、效率與儲存量
時間複雜度
語句頻度:語句可重複執行次數
t(n):所有語句之和,n為問題的規模
int sum =0;
for(
int i =
1;i <= n;i++
) sum +
= i;
//語句頻度是n
//t(n) = 1 + n
//o(f(n)) = 1
時間複雜度t(n) = o(f(n))o表示t(n)與f(n)在n->正無窮時為同階無窮大
最壞時間複雜度(實際意義)、最好時間複雜度、平均時間複雜度、基本運算頻度來分析演算法時間複雜度
空間複雜度
演算法消耗的儲存空間,記s(n) = o(g(n))
除本身所用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的工作單元和儲存為實現演算法所需一些資訊的輔助空間。
演算法原地工作時演算法所需的輔助空間為常量,o(1)
線性結構特點:
在資料元素的非空有限集中:
(1)存在唯一的乙個被稱作「第乙個」的資料元素;
(2)存在唯一的乙個被稱作「最後乙個」的資料元素;
(3)除第乙個之外,集合中的每乙個資料元素均只有乙個前驅;
(4)除最後乙個之外,集合中的每個資料元素均只有乙個後繼;
線性表的順序表示指用一組位址連續的儲存單元依次儲存線性表的資料元素
考研資料結構面試總結
day1 q1 雜湊訪問的優缺點 a1 優點 檢索,增加,刪除節點操作都很快。缺點 可能會產生衝突,解決衝突會增加時間和空間的開銷。q2 從有序表中刪除其值在給定值s與t之間的所有元素。口述 a2 先尋找值大於等於s的第乙個元素 第乙個刪除的元素 然後尋找大於t的第乙個人元素 最後乙個刪除的元素的下...
考研資料結構
一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...
考研複試面試準備 資料結構篇
一些資料物件以及附加在這些資料物件上的集合的操作 尾插法建立單鏈表,n個元素儲存在陣列a中 void createlistr lnode c,int a,int n r next null 頭插法 void createlistf lnode c,int a,int n 棧 只能在一端進行插入或刪除...