数据结构
DS
@Cabbage
记录了一个大学生学习嵌入式软件方向的过程
展开
-
弗洛伊德算法
最短路径问题:弗洛伊德算法--3for算法。原创 2023-12-01 16:45:35 · 221 阅读 · 0 评论 -
迪杰斯特拉算法
核心算法:通过三个辅助数组,初始化完成后,循环依次把到各个结点的最短路径进行更新,最终通过D数组完成对最短路径值的记录。迪杰斯特拉算法--最短路径问题。原创 2023-11-22 20:02:40 · 104 阅读 · 0 评论 -
克鲁斯卡尔算法
关键点:辅助数组:用于保存连通分量,来判断边是否连通。克鲁斯卡尔算法--最小生成树的算法。原创 2023-11-21 16:32:13 · 333 阅读 · 0 评论 -
普里姆算法
代码中的数据如图所示。原创 2023-11-19 08:38:29 · 159 阅读 · 0 评论 -
day6--哈夫曼树
1.从权值集合中选择权值最小的两个结点,构造一棵二叉树,根结点的权值为其左、右子树根结点权值之和。2.删除这两个结点,将新生成的根结点加入到权值集合中。3.重复以上步骤,直到权值集合中只剩下一个结点为止。原创 2023-11-18 15:23:06 · 40 阅读 · 0 评论 -
day5--图的创建与DFS和BFS遍历
BFS利用数据结构队列(queue)实现,空间复杂度为O(2^n),另外BFS可以用来解决最短路问题。DFS使用数据结构栈(stack)或递归实现,其空间复杂度为O(n)原创 2023-11-12 22:07:04 · 130 阅读 · 0 评论 -
day4--二叉排序树
【代码】day4--二叉排序树。原创 2023-10-26 20:59:18 · 107 阅读 · 1 评论 -
day3--线索二叉树
【代码】day3--线索二叉树。原创 2023-10-18 22:15:14 · 108 阅读 · 0 评论 -
day2--非递归遍历二叉树(利用链式栈实现)
if(top->rchild && top->rchild->flag==0){//判断是否有右子树和是否被访问过。//让flag置1--表示当前右子树已被访问。原创 2023-10-15 09:46:32 · 132 阅读 · 0 评论 -
day1--树的层次遍历(利用双循环链表队列实现)
/3、Q->pre就是最后一个结点,然后再指向next,就是最后一个结点和新结点的连接。//3、让第一个结点的next指向最后一个结点。if (temp->Data->lchild) { //此结点的左子树如果不为空就入队。if (temp->Data->rchild) { //此结点的右子树如果不为空就入队。//1、新结点的pre指向最后一个结点。Q->next=Q;原创 2023-10-14 22:19:34 · 213 阅读 · 0 评论 -
day1--二叉树的创建与遍历
/二叉树的先序遍历。//二叉树的中序遍历。//二叉树的后序遍历。原创 2023-10-14 17:12:54 · 69 阅读 · 1 评论