![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法C语言描述
B站上青岛大学王卓的视频。只作为自己学习笔记。
é«
这个作者很懒,什么都没留下…
展开
-
【查找-在散列表上查找-散列表 的构建、冲突解决办法、查找】
散列函数的构造:解决冲突的方法:1.开地址法:解决冲突的方法:1.链地址法(拉链法):效率:原创 2022-03-27 18:33:49 · 276 阅读 · 0 评论 -
【查找-在树表上查找-二叉排序树】
二叉排序树:比较的次数最多不超多树的深度。原创 2022-03-27 16:51:54 · 245 阅读 · 0 评论 -
【查找-在顺序表上查找-1.顺序查找2.折半查找3.分块查找】
顺序查找的ASL:=1/n*(1+2+3+...n) = (n+1)/2二分查找的ASL:对于一个元素的所需比较次数不会大于它所在的判定树的深度log2(n+1)顺序查找:改进折半查找(二分查找)(针对有序表):分块查找(索引顺序表查找):常用的是分块有序:就是每一块内没有顺序,但是块与块之间有序(索引表有序),我们就能先在索引表里查找,再在所在块查找;...原创 2022-03-27 15:50:09 · 336 阅读 · 0 评论 -
【图的应用-最短路径-单源最短路径(Dijkstra)迪杰斯特拉算法-所有顶点间的最短路径(Floyd)弗洛伊德算法】
他们的思想都是逐步的在原路径里增加顶点,若加入中间顶点后路径长度变短,则修改。否则就维持原路径Dijkstra算法:总是去求从已知顶点到终点的直达最短路径初始是S={v0} T={其余顶点}D[i]是一个数组,它记录了初始顶点到其余各顶点的最短直达路径(1)选择一个点作为出发点加入S;记录S到T内各顶点的直达距离;为D[i](2)选择(1)内直达距离最小的顶点加入S(3)再次记录通过S到T内各定点的距离。如果有比D[i]小的,则更D[i];继续选择一个最小的距离...原创 2022-03-27 14:29:36 · 90 阅读 · 0 评论 -
【图的应用-最小生成树-MST性质-普里姆算法(Prim)-克鲁斯卡尔算法(Kruskal)-比较】
prim算法:利用已经在树里的顶点集合U和未在树里的集合V-U,找到他们之间代价最小的边;(1)初始是随机选择一个顶点加入克鲁斯卡尔算法:与prim不同,克鲁斯卡尔初始时将所有的顶点都加到树里面,让边的权值从小到大排序,依次选择最小的边加入到树里,如果加入的边形成了环就不加,选择下一个边;直到树里边的边为n-1个比较:...原创 2022-03-27 13:34:38 · 143 阅读 · 0 评论 -
【图的遍历算法-深度遍历-广度遍历】
深度优先算法-一条道走到黑黑了再回头用邻接矩阵表示的图的深度遍历:随机选择一个顶点作为起点,在该顶点矩阵所在的行上做遍历就能找到这个顶点的邻接的另一个顶点用邻接表表示的图的广度遍历:先访问一个顶,让这个顶点入队,以便队伍里面有东西,然后进行while判断只要队不为空,我就出队,把出队的顶点的邻接点而且是未访问的入队并去访问它。...原创 2022-03-25 23:16:02 · 110 阅读 · 0 评论 -
【图的链接表表示法-链式存储结构】
邻接表的链式表达:代码:弧的结构:顶点的结构:图的结构:创建无向图:由于是无向图,对于每一次循环如果我们输入v1,v2两个节点,在G里的vertices里面就能找到对应的下标,分别在对应的下标后面创建一个弧结构如果只在一个下标后面创建弧结构就能创建入度图或出度图邻接表的优缺点...原创 2022-03-25 20:22:48 · 152 阅读 · 0 评论 -
【图的存储结构-邻接矩阵法】
邻接矩阵表示法:一个表表示各顶点 的数据,一个n*n矩阵(n是顶点个数)表示顶点之间是否有连接无向网代码:无向网向有向网或无向图转变:无向网->无向图:代码中将w初始化的时候置为0;赋值的时候赋为1;无向图->有向网:代码中在给w赋值中增加两个for嵌套循环即可;邻接矩阵的优缺点:...原创 2022-03-25 16:29:32 · 86 阅读 · 0 评论 -
【图-概念-基本术语-】
原创 2022-03-25 11:43:09 · 41 阅读 · 0 评论 -
【遍历二叉树-递归先序、中序、后序得遍历-非递归的中序遍历-层次遍历】
中序遍历:当遇到一个根结点的时候不能去访问它,先去找它的左子树,当它的左子树为NULL的时候,我们就可以访问这个根。非递归的中序遍历:while里面一个控制整个程序停止的时间:栈为空 一个控制着该节点是出栈还是入栈...原创 2022-03-25 23:17:01 · 51 阅读 · 0 评论 -
【二叉树定义和性质-满二叉树-完全二叉树的定义和性质-二叉树的顺序存储结构和链式存储结构】
原创 2022-03-23 14:32:35 · 511 阅读 · 0 评论 -
【树-定义和基本术语】
原创 2022-03-23 14:26:57 · 50 阅读 · 0 评论 -
【广义表】
原创 2022-03-23 14:24:27 · 44 阅读 · 0 评论 -
【串-顺串-链串-串的算法(BF(Brute-force)算法暴力破解,KMP算法)】
顺串:用的多,因为串的插入删除操作用的少;链串:BF算法:i回溯:就是i移动了几格就退回几格,j是移动的格数+1,因此i回溯是i=i-(j-1)=i-j+1再往后退一格就是i=i-j+2...原创 2022-03-23 14:08:19 · 118 阅读 · 0 评论 -
【队列-链式表示】
定义:入队:出队:原创 2022-03-22 21:56:51 · 54 阅读 · 0 评论 -
【队列-顺序表示】
定义:假溢出处理:假设MAXSIZE是6,当rear+1(即有一个数据入队后rear=MAXSIZE)为MAXSIZE时但是front!=0,就是假溢出,此时让rear重新指向0位置,方法就是取模,当rear是0,1,23,4,5时%MAXSIZE仍是自己,但是当rear=6时,取模就是0;真溢出可以表述为(Q.rear+1)%MAXSIZE ==Q.front...原创 2022-03-22 20:39:17 · 44 阅读 · 0 评论 -
【栈】-链栈
结构:入栈:出栈:取栈顶元素:原创 2022-03-22 19:29:05 · 42 阅读 · 0 评论 -
【栈】-顺序栈
基本概念:PUSH:POP:原创 2022-03-22 16:44:12 · 35 阅读 · 0 评论 -
顺序表的链表
链表的特点、结构:建立链表:头插法建立链表:尾插法按值查找,或按位置查找,找到返回这个结点的地址:删:(增与之同理)循环链表:循环链表的合并:双向链表,双向循环链表:双向链表的删除:总结:...原创 2022-03-22 12:34:59 · 461 阅读 · 0 评论 -
线性表的顺序表
#include<stdio.h>#include<stdlib.h> #include<assert.h>//动态顺序表 typedef int SLDataType;typedef struct SeqList{ SLDataType* arry ; int size;//一个容量里数据的几个 int capacity;//开辟的新的容量 }SL,SeqList;//初始化//开辟一个容量是4的一个数组。这个数...原创 2022-03-21 17:00:00 · 33 阅读 · 0 评论