题型一:线性表的顺序存储操作(必考)
套路句式:插入先判满,删除先判空,移动元素从后往前撸。
高频考点:在顺序表第i个位置插入元素,代码固定三步:
1. `if (i<1>L.length+1) return ERROR;`(位置非法)
2. `if (L.length >= MAXSIZE) return ERROR;`(表满)
3. `for (int j=L.length; j>=i; j--) L.data[j] = L.data[j-1];`(后移)
直接背这个循环,下标别搞错。
题型二:二叉树遍历与结点计算(必考)
口诀:
高频考点:
1. 给遍历序列求二叉树:必考中序+另一个(先或后),中序用来分左右子树。
2. 结点数计算:满二叉树深度h,结点数=`2^h-1`;完全二叉树第k层最多`2^(k-1)`个结点。
题型三:图的存储与遍历(必考)
邻接矩阵代码模板:
for (i=0; i visited[i] = 0; for (i=0; i if (!visited[i]) DFS(i); DFS函数里递归访问`G.arcs[v][j]==1`且`visited[j]==0`的点。 BFS必考队列操作:入队、出队、访问。 硬核对比: 考题大概率让你写一趟快速排序的结果。 二分查找固定代码: low=0; high=n-1; while (low<=high) { mid=(low+high)/2; if (key==L[mid]) return mid; else if (key else low=mid+1; return -1; 必考计算:二分查找最大比较次数=`⌊log₂n⌋+1`,给n=10直接答4次。 1. 代码填空:看前后行,大概率是`i++`、`j--`、指针移动。 2. 算法题:时间复杂度问题,排序选最快的(、堆排),查找选二分。 3. 简答题:树和图的定义背原文,比如“树是n(n≥0)个结点的有限集”。 4. 蒙题口诀:遇到“最优”选分治,遇到“稳定”选冒泡/归并,遇到“链式”选指针。题型四:排序算法比较与代码(必考)
题型五:查找算法分析(必考)
附:数据结构答题技巧