考研復試面試准備——數據結構篇


第1章——緒論

數據結構的三要素

img

什么是抽象數據類型

一些數據對象以及附加在這些數據對象上的集合的操作

第2章——線性表

尾插法、頭插法建立單鏈表

尾插法建立單鏈表,n個元素存儲在數組a中

void createListR(LNode *&C,int a[],int n){
	LNode *r,*s;
	C=(LNode*)malloc(sizeof(LNode));
	C->next=NULL;
	r=C;
	for(int i=0;i<n;i++){
		s=(LNode*)malloc(sizeof(LNode));
		s->val=a[i];
		r->next=s;
		r=r->next;
	}
	r->next=NULL;
}

頭插法

void createListF(LNode *&C,int a[],int n){
	LNode *s;
	C=(LNode*)malloc(sizeof(LNode));
	C->next=NULL;
	for(int i=0;i<n;i++){
		s=(LNode*)malloc(sizeof(LNode));
		s->val=a[i];
		s->next=C->next;
		C->next=s;
	}
}

棧和隊列的區別

棧:只能在一端進行插入或刪除操作的線性表

隊列:操作受限的線性表,僅允許一端插入,另一端刪除

第5章——數組、矩陣與廣義表

稀疏矩陣如何存儲

三元組、偽地址表示法(鄰接表、十字鏈表)

第6章——樹與二叉樹

給定n個結點,能構造多少中不同的二叉樹

Catlan函數:$ h(n)=\frac{C_{2n}^{n}}{n+1}$

樹的相關概念

  1. 滿二叉樹:除了最后一層外,其他結點都有兩棵子樹
  2. 完全二叉樹:除了最后一層外,其他任何一層的結點數都達到最大值,且最后一層只在右側缺少結點
  3. 平衡二叉樹:任何一個結點的左右子樹高度不超過1

第7章——圖

最小生成樹和最短路徑

  1. 迪傑斯特拉算法:求單源最短路徑,邊的權值不能為負
  2. 弗洛伊德算法:求任意頂點之間的最短路徑
  3. 普里姆算法:無向圖,稠密圖
  4. 克魯斯卡爾算法:無向圖、稀疏圖、並查集

第8章——排序

各種排序算法的性能

  1. 時間復雜度

    快些歸隊:\(n\log_{2}n\),其他:\(n^{2}\)

  2. 空間復雜度

    快排:logn,歸並:n,基數:r(關鍵字基的個數),其他都是1

  3. 算法穩定性

    不穩定:快些選一堆

第9章——查找

B樹和B+樹

B樹,又稱多路平衡查找樹, B 樹中所有結點的孩子個數的最大值稱為B 樹的階,通常用m 表示。一棵m 階B 樹或為空樹,或為滿足如下特性的m 叉樹:

  1. 樹中每個結點至多有m 棵子樹,即至多含有m-1 個關鍵字。
  2. 若根結點不是終端結點,則至少有兩棵子樹。
  3. 除根結點外的所有非葉結點至少有「m/2] 棵子樹,即至少含有「m/2]- 1 個關鍵字。
  4. 所有的葉結點都出現在同一層次上,並且不帶信息(可以視為外部結點或類似千折半查找判定 樹的查找失敗結點,實際上這些結點不存在,指向這些結點的指針為空)。

B 樹是所有結點的平衡因子均等於0 的多路平衡查找樹。

B+樹是應數據庫所需而出現的一種B 樹的變形樹。
一棵m 階的B+樹需滿足下列條件:

  1. 每個分支結點最多有m 棵子樹(孩子結點)。
  2. 非葉根結點至少有兩棵子樹,其他每個分支結點至少有「m/2]棵子樹。
  3. 結點的子樹個數與關鍵字個數相等。
  4. 所有葉結點包含全部關鍵字及指向相應記錄的指針,葉結點中將關鍵字按大小順序排列, 並且相鄰葉結點按大小順序相互鏈接起來。
  5. 所有分支結點(可視為索引的索引)中僅包含它的各個子結點(即下一級的索引塊)中 關鍵字的最大值及指向其子結點的指針。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM