数据结构(C语言版)总结
1. 数据结构的4中基本类型 1、集合 2、线性结构 3、树形结构 4、图、网状结构
2. 结构定义中的关系描述是数据元素之间的逻辑关系,因此叫逻辑结构
3. 数据存储结构:顺序存储结构、链式存储结构 (有顺序映像和非顺序映像导致)
4. 算法的特性:有穷性、确定性、可行性、输入、输出
5. 算法设计要求:正确性、可读性、健壮性、效率和低存储量需求
6. 顺序表:用一组地址连续的存储单元一次存储线性表的数据元素
7. 线性表中插入和删除一个元素,平均移动半个表长
8. 线性表是顺序存储结构的特点:逻辑关系上相邻的两个元素在物理位置上也相邻
9. 线性表是链式存储结构的特点:用一组任意的存储单元存储线性表的数据元素
10. 结点:包括:数据域和指针域(指针为数据元素之间的逻辑关系的映像)
11. 将S(指针)指向的结点插入单链表的语句:s->next=p->next;p->next=s;
12. 删除单链表中的元素: p->next= p->next ->next;
13. 循环链表的特点:表中最后一个元素的指针域指向头结点,整个链表形成一个环:H->next= =H; 循环链表 H->next=null;
14. 双向链表的特点:d->next->prior=d->prior->next=d;
15. 栈:限定尽在表尾进行插入和删除操作的线性表后进先出(LIFO)
16. 顺序栈;栈的顺序存储,利用一组地址连续的存储单元进行一次存放自栈底到栈顶的数据元素,top指针指向栈顶元素,top=0;表示空栈
17. 数制转换:N=(N/d)*d+N%d;
18. 队列是一种先进先出FIFO的线性表,允许插入是队尾,删除的是队首,队长:尾-首
19. 循环队列:为满的处理:1.设置标识位以区别队列是空还是满,2.约定队列的头指针在队列尾指针的下一个位置上,既为满;既front= =(rear+1)%MAXSIZE;
20. 零个字符的串为空串,一个或者多个空格组成空格串
21. 假若值相同的袁术或者零元素在矩阵中的分布有一定的规律,则我们称此矩阵为特殊矩阵,既稀疏矩阵,为了节省空间可对此进行压缩
22. 广义表是线性表的推广既列表(原子和子表),称第一个元素为表头,其余元素为表尾
23. 树的层次即-------------深度,拥有子树的个数成为 -----度
24. 二叉树特点:每个节点至多有两颗子树(既不存在度大于2的结点)且左右子树有顺序
25. 二叉树的性质:
1, 第k层至多有个 2k-1结点
2, 深度为k 的二叉树至多有2k-1 个结点
3, 叶子结点数度0与度为2的结点数 n0=n2+1
n个结点的完全二叉树的深度为[log2n]+1
.i的左孩子--2i,右孩子----2i+1
26. 先序:根左右 中序:左根右 后序;左右根
27. 对二叉树某种次序遍历使其变为二叉树的过程-------线索化 遍历算法-------------
28. 森林转化为树:连接兄弟节点,断开与父节点的连线,水平旋转45度(先中后)遍历
29. 哈夫曼树—最优二叉树,带权路径最短,没有度为1的结点,算法:最小的两个权值组成左右子树
30. 一颗有n个叶子结点的哈夫曼树共有2n-1个结点,哈弗曼编码:左分支约定为0,右分支为1,频率高的在上面
n个定点的无完全图最大的边数是n(n-1)/2
32. 有向完全图具有n(n-1)条弧的
33. 有向图的极大连通子图------强连通分量
34. 如果一个有向图恰有一个顶点的入度为0,其余顶点的入度为1---------是一颗有向树
35. 邻接表(图)、十字链表(有向图)、邻接多重表(无向图)的链式存储结构
36. 深度优先遍历-----树的先根遍历 广度优先遍历-----树的按层次遍历
37. 生成树:所有顶点均连接在一起,但不存在回路的子图
38. 最小生成树:对于联通网络,其生成树的各边也是带权值的,其各边的权值之和成为生成树的权,权值最小的生成树称为最小生成树
39. 路径长度最长的路径-----关键路径 时间复杂度为 O(n+e)
40. 最短路径的时间复杂度O(n 3)
41. 静态查找(顺序、有序、索引顺序)-是否在表中 2,元素属性动态查找----插入 删除
42. 平均查找长度ASL=np1+。。。+pnà概率
43. 判定树非完全二叉树,但他的叶子结点所在的层次之差最多为1,则n个节点的判定树的深度和n个结点的完全二叉树的深度相同
44. 二叉排序(查找)树,左孩子<根结点<右孩子 中序排序是一个递增的有序系列,既拥有类似折半查找的特性,又采用链表存储结构,动态树表,最优或次优查找舒适静态树
45. 不同的关键字可能得到同一个哈希地址既key1#key2,F(key1)=f(key2) ,既冲突
46. 哈希查找—散列查找,用哈希函数查找的过程
1.直接定址法 2,数字分析法 3,平方取中法
4折叠法5除留余数法H(key)=key%p p<m6、随机数法
47. 处理冲突的方法:
1. 开放地址法:H=(H(key)+d)%m(表长) d=1,2,3,4.。。线性探测再散列d=1,-1,4,-4、、、、、二次探测在散列
2. 在哈希法
3. 链地址法
4. 建立一个公共溢出区
48. 希尔排序的特点:子序列的构成不是简单的“逐段分割“而是将相隔某个增量的记录组成的一个子序列
49. 选择排序的思想:每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录
50. 单节点的二叉树是堆。在完全二叉树中所有以叶子结点为根的树是堆
51. 时间复杂度简单排序:O(n2 ) 快速,堆,归并:O(nlogn )基数O(d(n+rd))
52.表达式转换
人工实现转换
这里我给出一个中缀表达式:a+b*c-(d+e)
第一步:按照运算符的优先级对所有的运算单位加括号:式子变成了:((a+(b*c))-(d+e))
第二步:转换前缀与后缀表达式
前缀:把运算符号移动到对应的括号前面
则变成了:-( +(a *(bc)) +(de))
把括号去掉:-+a*bc+de 前缀式子出现
后缀:把运算符号移动到对应的括号后面
则变成了:((a(bc)* )+ (de)+ )-
把括号去掉:abc*+de+- 后缀式子出现
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取
1.支付宝搜索 522398497,或扫码支付宝红包海报。
支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包
微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我