- 博客(17)
- 收藏
- 关注
原创 Prim 算法与 Dijkstra 算法
Prim算法是一种用于解决最小生成树问题的贪心算法。它从一个起始顶点开始,逐步扩展生成树,每次选择与当前生成树相邻的最小权值边所连接的顶点,并将其加入生成树中,直到所有顶点都被加入生成树为止。Prim算法的时间复杂度为O(ElogV),其中E为边数,V为顶点数。而在DEVC++上没有,可见,DEV要粗糙许多。在VS上运行代码的时候出现了报错。一、先上代码,再说废话。
2023-05-23 13:15:12 59
原创 数据结构之哈夫曼树
一种特殊的二叉树,用于编码和解码数据。它是一种,也称为最优前缀编码树或最优二进制编码树。哈夫曼树的构建过程是基于的,即每次选择权值最小的两个节点合并成一个新节点,直到所有节点都合并成一个根节点为止。在构建过程中,每个节点的权值是其子树中所有叶子节点的权值之和。哈夫曼树的主要应用是数据压缩,通过将频率高的字符用较短的编码表示,可以大大减小数据的存储空间。在压缩过程中,需要先构建哈夫曼树,然后根据每个字符在哈夫曼树中的路径生成对应的编码表,最后将原始数据按照编码表进行编码。
2023-05-16 09:30:10 137
原创 二叉树的建立与遍历
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,称为左子节点和右子节点。二叉树可以为空,或者由一个根节点和两个子树组成,每个子树也是二叉树。二叉树的遍历方式有前序遍历、中序遍历和后序遍历。在前序遍历中,先访问根节点,然后访问左子树,最后访问右子树;在中序遍历中,先访问左子树,然后访问根节点,最后访问右子树;在后序遍历中,先访问左子树,然后访问右子树,最后访问根节点。二叉树的应用非常广泛,例如在搜索算法、排序算法、图形算法等领域都有广泛的应用。
2023-04-30 16:44:52 49
原创 括号匹配------栈的应用
括号匹配,在遇到一些前缀/后缀表达式求值,即(逆)波兰表达式时,将这些表达式转化成中缀表达式也需要利用算术优先级以及括号匹配,不过之前我都是利用一个栈来实现,或者采用更简单的Python的列表来实现,老师讲的利用两个栈来实现复杂表达式计算值得学习。括号匹配,在一些简单的字符串中,人能够一眼看出来,但字符串长了之后,计算机就显得更加聪明了。很奇怪,VS在抄写代码时,遇到bracketMatchingTest的时候,但是我将代码复制到DEVC++上,代码能够运行。1.先上代码,再讲废话。
2023-04-24 11:38:25 96
原创 汉诺塔问题以及线性表总结
还是得把前面的线性表基础以及计算复杂度学扎实,后面的栈,队列等才更易上手。n个盘子-----2^(n-1)次。汉诺塔问题是一种很常见的递归问题。利用递推公式可求解出时间复杂度。所以其时间复杂度为O(2^n)其空间复杂度易知为O(n).1、不说废话,线上代码。2个盘子------3次。3个盘子------7次。其中还涉及到栈的知识。
2023-04-18 20:08:21 56
原创 数据结构之多项式加法
非常奇怪,抄写的代码和直接copy老师的代码在vs2022上均不能运行,却都能在Dev上运行,不知道原因,很奇怪。3.实现功能的函数接收两个指向链表头结点的指针,遍历两个链表,将相同指数的项相加,然后将结果插入到一个新的链表中。2.插入节点时,需要按照指数从高到低的顺序插入。1.先定义一个结构体包括系数和指数。4.最后返回新链表的头指针。
2023-04-10 22:55:13 45
原创 利用Python GUI写一个简单的绘画板
这个版本的画板,还有个缺点,画笔粗细只设置了小中大三个选项,没有像tkinter版设置一个滑动条,本想利用QInputDialog来直接输入画笔粗细,但是引用QInputDialog后出现报错。
2023-04-08 13:04:33 1167 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人