数据结构
文章平均质量分 69
小新&
如果你还年轻,你得保持理智,即使很痛,也要远离诱惑。
展开
-
哈夫曼编码与译码(数据结构课程设计)
我所能思考出来的就这三种算法,如果小伙伴们有更好的方法那更好。个人比较建议使用第一种方法,第一种方法可以接受的数据范围更加广泛,不受局限,更加贴合实际。后两种方法,容易受测试数据影响。众所周知,数据结构这门课程是非常非常重要的。无论是找工作还是考研,你都能体会到。数据结构这本书的知识也非常的奇特美妙。希望大家好好学习研究。废话就不多说,上代码。事先声明:哈夫曼编码中的选择函数Select思路借鉴了csdn大佬,非原创(吹一波彩虹屁,大佬真厉害)准备工作:创建好哈夫曼树,准备好编码表(每个叶子的对应编码)原创 2023-06-08 17:53:45 · 316 阅读 · 2 评论 -
图的遍历(DFS和BFS)
NextAdjVex(G,v,w)除了第一个不为0的下一个不为0的如果是邻接表(由表头数组构成的多个单链表,FirstAdjVex(G,v)其中v就是表头,在表头数组中寻找到v,这样就找到了这个单链表, 单链表中的边结点都是该顶点的邻接点,表头的firstarc指针域就是该顶点的第一个邻接点,每个边结点的nextarc是下一个邻接点。和树的通历类似,图的遍历也是从图中某一顶点出发,按照某种方选对图中所有演道进行图的遍历算法是求解图的连通性问题、拓扑排序和关键路径等算法的基础——它们对无向图和有向图都适用。原创 2023-06-08 17:33:55 · 1111 阅读 · 0 评论 -
最小生成树(Prim算法,Kruskal算法)
对于n个顶点的连通网可以建立许多不同的生成树,每一棵生成树都可以是一个通信网。每次循环,让每个closedge得到最小的记录,并把这个顶点加入已选顶点集中,然后更新每组最小边信息,更新是最重要的一步,每一组都需要更新,就是未选顶点集中的每个顶点的相应closedge分量都要更新,为下一次循环做准备。对于未选顶点集,每个顶点都有一个closedge数组分量,表示这个数组下标所对应的顶点(未选顶点集)与已选顶点集的顶点之间组成的边,其中权值最小的边的顶点(该顶点是已选顶点集中的顶点的序号,及此时最小的权值。原创 2023-06-01 12:50:42 · 734 阅读 · 0 评论 -
插入排序(希尔排序)
另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外在进行访问的排序过程 本章首先介绍各种常用内部排序的方法,最后介绍外部排序的基本过程。希尔排序实质上是采用分组插入的方法,先将整个待排序记录序列分割成几组,从而减少参与直接插入排序的数据量,对每组分别进行直接插入排序,然后增加每组的数据量,重新分组。内部排序的方法很多,但就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境(如记录的初始排列状态等)下使用。原创 2023-05-23 16:32:43 · 322 阅读 · 0 评论 -
静态查找(二分查找)
mid是中间位置那么接下来:“查找方向”有两个,要么“向左查找”high=mid-1,mid比较过,开始从下一个比较。唯一需要注意的是:循环条件是low<=high,不是low<high,mid=(.low+high)/2,该位置是low也是high,查找区间的最后一个点,还要比较。每一次的查找,都是对比mid.位置处的元素mid为中间位置,low表示区间下界,high表示区间下界。区间向左偏移,low本就在左,不用改变,改变high. high向左.静态查找:顺序查找 折半查找(二分查找) 分块查找。原创 2023-05-22 14:35:03 · 141 阅读 · 0 评论 -
散列表的查找(哈希函数)
这种探测方法可以将散列表假想成一个循环表,发生冲突时,从冲突地址的下一单元顺序寻找空单元,如果到最后一个位置也没找到空单元,则回到表头开始继续查找,直到找到一个空位,就把此元素放入此空位中。但一般情况下认为:凡是“均匀的”散列函数,对同一组随机的关键字,产生冲突的可能性相同,假如所设定的散列函数是“均匀”的,则影响平均查找长度的因素只有两个——处理冲突的方法和装填因子α。反之,α越大,表中已填入的记录越多,再填记录时,发生冲突的可能性就越大,则查找时,给定值需与之进行比较的关键字的个数也就越多。原创 2023-05-22 13:53:04 · 347 阅读 · 1 评论 -
红黑树之歌
我看到一个全新的节点,我想把它涂成黑色。不能有很多红节点,我们必须把它们涂成黑色。我想把它们涂成黑色。我想在log n的时间内找到键,就这样,不幸的是,对它们进行编码可能很麻烦。如果它们仍然令人困惑,你不必担心。这门课,你永远听不到的。我看到一个全新的节点,我们需要一棵平衡的树,旋转子树可以是一个球。我们得把它漆成黑色。如果我们有半个大脑,我看到一个全新的节点。没有时间考虑AVL树。我们必须把它漆成黑色。原创 2023-05-17 13:38:51 · 124 阅读 · 0 评论 -
表达式求值(课程设计,含讲解)
若为运算符,通过函数Precede进行优先级比较,根据课本中的讲解思路,函数Precede应该是一个二维的比较,前者运算符和后者运算符构成的二位运算符比较表格。这种情况,对我们此次循环读入的字符串进行了操作(入栈:已经被保存下来了),这就导致下一次的循环没有对象,需要我们读入)因为运算比较并完成入栈或者出栈操作后,这一次的循环已经结束了,该进行下一次的循环操作了。每次对一个完整的字符串进行出栈入栈运算,完整的字符串即一个完整的操作数,一个完整的运算符(单个,两个字符组成的)原创 2023-05-09 08:43:41 · 221 阅读 · 12 评论 -
哈夫曼树的构造及哈夫曼编码(两种方法)
strcpy函数原型:char* strcpy(char* des,const char* source)在两种解法中,Select函数的编写是借鉴csdn大佬的思路,非个人原创。文章中如有错误,请多多指教。注意类型转换,保证类型一致匹配。两个参数都是地址类型的。原创 2023-05-09 12:54:41 · 816 阅读 · 3 评论