数据结构速成

距离研究生考试满打满算还有3天时间,实话实说专业课还没开始复习。好在只考一门,突击一下。
由于之前学过几遍,本次整理只重点整理命题点及做题易错点。

绪论

1、数据元素是数据的基本单位
2、数据项是数据元素的最小单位
3、数据对象 是具有相同性质的数据元素的集合

一、线性表

1、注意头插法:可以使输入顺序与成链顺序相反;如果没有头节点则需要不断修改头指针
2、链表删除p:可以删除p->next,然后交换值
3、链表在
p之前插入元素,可以插入在p之后,然后交换值
4、关于链表判断空:
单链表:有头节点:head->next = = NULL 没有头节点: head = = NULL
循环单链表:head->nexthead
循环双链表:L->next
L && L->prior== L

二、栈与队列

1、卡特兰数:N个元素进栈不同的出栈顺序为 1 n + 1 C n / 2 n {{1}\over{n+1}} Cn/2n n+11Cn/2n
2、循环队列:front 指向队头元素,rear指向队尾元素 rear的序号比front的要大

//判空
Q.front== Q.rear;
//判满
(Q.rear+1)%MaxSize==Q.front;
//入队
	//先判满
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%MaxSize;
//出队
	//先判空
x=Q.data[front];
Q.front=(Q.front+1)%MaxSize;

3、链表队列(单链表实现,带头尾节点,头删尾插):如果没有头节点需要特别注意插入删除跟空队列的关系。(删除最后一个元素后,需要特判将头尾指针全部值为NULL;插入第一个元素,需要将头尾指针全部指向第一个元素)
4、处理表达式求值时,左括号看作最高优先级,右括号看作最低优先级。在优先关系中除了大于小于还要设置等于关系(判断结束 和处理左括号右括号相遇)
5、同一问题的非递归算法比递归算法效率更高
6、三对角矩阵:k=2i+j-3; i=((k+1)/3+1)下取整

三、串

1、子串定位函数:原串a[i],子串b[j]。出现匹配不成功后:i=i-j+2
2、KMP的next数组手算:先算部分匹配值,然后右移,最后加一
3、KMP算法及改进

四、树与二叉树

1、树的路径长度是指所有路径长度之和
2、二叉树性质: n 0 n_0 n0= n 2 n_2 n2+1. (推导 n 0 n_0 n0+ n 1 n_1 n1+ n 2 n_2 n2= n 1 n_1 n1+2 n 2 n_2 n2+1)
3、中序遍历+X序遍历即可唯一确定二叉树
4、n个节点的线索二叉树,2n个域,n-1个指针,n+1条线索
5、线索化后,后序线索二叉树依然不能很好解决寻找后序后继问题
6、树林转换成二叉树之后,右指针域空的个数,只与原树中非终端节点个数n有关,为n+1
7、 n h n_h nh表示深度为h的平衡树的最少含有节点数(或称所有非叶子结点平衡因子均为1), n 0 n_0 n0=0, n 1 n_1 n1=1, n 2 n_2 n2=2,且 n h n_h nh= n h − 1 n_{h-1} nh1+ n h − 2 + 1 n_{h-2}+1 nh2+1
8、平衡树中,最小元素不一定是叶节点,最后插入元素也不一定是叶节点。

五、图

1、无向图中,连通分量就是极大连通子图

六、查找

1、顺序查找查找成功ASL: n + 1 2 {{n+1}\over{2}} 2n+1 ,查找不成功ASL:n+1
2、有序顺序查找 成功ASL: n + 1 2 {{n+1}\over{2}} 2n+1,查找不成功ASL: n 2 + n n + 1 {{n}\over{2}}+{{n}\over{n+1}} 2n+n+1n
3、折半查找生成树一定是棵平衡二叉树
4、分块最理想块长为 n \sqrt{n} n
5、B树: n阶B树,是指每个节点最多有n个子树,所以最多有n-1个关键值
根节点至少一个关键值(两颗子树),其他节点至少 ⌈ m / 2 ⌉ \lceil m/2 \rceil m/2 颗子树,至少 ⌈ m / 2 ⌉ − 1 \lceil m/2 \rceil -1 m/21 个关键值
6、推算B树的高度: 最多:用每个节点都塞满:n<= ( m − 1 ) ( 1 + m + m 2 + . . . + m h − 1 ) (m-1)(1+m+m^{2}+...+m^{h-1}) (m1)(1+m+m2+...+mh1)
最少:用第h+1层的节点数=最关键字个数+1来算:第一层1个节点,第二层2个,第h+1层: 2 ⌈ m / 2 ⌉ h − 1 2\lceil m/2 \rceil^{h-1} 2m/2h1
7、B树插入导致节点>m-1需要分裂时,需要上升的节点是 ⌈ m / 2 ⌉ \lceil m/2 \rceil m/2位置的节点。
8、B树的计算一定要把握住内部节点个数为n, 外部节点个数为n+1
9、散列表的成功查找平均长度与表长无关,与装填因子 α \alpha α有关

七、排序

1、插入排序 :最坏O(n2),稳定,可以搭配二分法找插入位置(还是O(n2)),
希尔排序:最坏O(n2),不稳定,只能适用于顺序表
冒泡排序:最坏O(n2),稳定,可以加一个tar及时结束
快速排序:最好O(nlogn),最坏(本来有序) O(n2),不稳定
简单选择排序:跟初始状态没有关系,一定是O(n2),不稳定
堆排序:建堆复杂度O(n),排序 O(nlogn),不稳定
二路归并排序:O(nlogn),稳定
基数排序:O(d*(n+r)) :d个部分,每部分可能有r个取值,比如三位数,d=3,r=10,稳定

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值