![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 56
lesleygigi
这个作者很懒,什么都没留下…
展开
-
【数据结构】广义表的深度
遍历广义表时,记录结点地址和经过次数,在遍历该结点的广义表时,如果某一结点经过了一次以上,则说明存在递归表。可以看到,递归深度达到26001,栈内存溢出,系统报错。实际上,递归表的深度是无穷大。如果递归求解的数据规模很大,调用层次很深,一直压入栈,会有堆栈溢出的风险。简单改动代码,测试在递归表的情况下height函数的递归深度。如果没有中止条件,递归函数就会无休止地被调用。可以通过储存中间计算结果减少递归函数的调用。原创 2023-11-19 00:51:34 · 155 阅读 · 0 评论 -
【数据结构】合并有序环形链表
假设 A和 B是两个按结点值从小到大排列的有序环形链表 (带表头结点,表头结点中 不存放有效信息)。试编写一个将这两个有序的环形链表归并为一个按节点值从小到大 排列的有序环形链表的 C函数。原创 2023-11-19 00:43:18 · 77 阅读 · 0 评论 -
【数据结构】反转链表
编写一个将给定的线性单链表逆转的函数,只允许改变结点的指针值,不允许移动结点值 ,返回逆转后的链表的头指针。原创 2023-11-19 00:38:07 · 42 阅读 · 0 评论 -
【数据结构】最佳查找树
外部路径长度:由根结点到二叉树所有外部结点的路径长度的 总和为二叉树的外部路径长度En。内部路径长度:由根结点到二叉树的所有内部结点的路径长度 的总和为二叉树的内部路径长度In。动态规划:一棵最佳查找树的所有子树都是最佳查找树。取最小值的查找树就是最佳查找树。原创 2023-06-30 19:55:54 · 523 阅读 · 1 评论 -
【数据结构】平衡树
为了找到最底部不平衡的子树,将删除操作迁移到最底部的子 树上进行(让被删除的结点v,最多有一个孩子。如果v有两个孩 子,则用它的中序的前一个结点代替它,然后删除它的中序的前一个结点)。首先将B改为C的左子树,而C原来的左子树CL改为B的右子树,然 后将A改为C的右子树,C原来的右子树CR改为A的左子树。不考虑结点的平衡度,使用在查找树中插入新结点的算法, 把新结点k插入树中,同时置新结点平衡度。 将A改为B右子树,B原来的右子树BR改为A的左 子树。为根的子树的形态,使得新子树的高度和插入以前以。原创 2023-06-30 19:50:58 · 81 阅读 · 1 评论 -
【数据结构】二叉查找树
如果树T是满树,那么树T一定是拟满树(完全二叉树)和丰满树。如果树T是拟满树(完全二叉树) ,那么树T一定是丰满树。(2)若r>0,且剩下的r个结点尽量靠左地排列在第i层上,则称树T是一棵拟 满二叉树(完全二叉树)。(1)如果树T的根节点的左子树非空,那么左子树中的所有结 点的键值都小于T的根结点的键值。(2)如果树T的根节点的右子树非空,那么右子树中的所有结 点的键值都大于T的根结点的键值。(1)若r=0,则称树T是一棵满二叉树,简称满树。(3)树T的根结点的左、右子树也都是查找树。原创 2023-06-30 19:43:24 · 69 阅读 · 1 评论 -
【数据结构】外部排序
通过不断地向败者树中读入记录,会产生多个 MINIMAX,直到最终所有叶子结点中的序号都为 2,此时产生的新的 MINIMAX 值的序号 2,表明此归并段生成完成,而此新的 MINIMAX 值就是下一个归并段中的第一个记录。(1)按照内存大小,将大文件分成若干长度为 l 的子文件(l 应小于内存的可使用容量),然后将各个子文件依次读入内存,使用适当的内部排序算法对其进行排序,将排好序的归并段重新写入外存,为下一个子文件排序腾出内存空间;(2)尽量减少初始归并段的数量 m,即增加每个归并段的容量;原创 2023-06-30 18:46:01 · 135 阅读 · 1 评论 -
【数据结构】外部排序与最佳归并树
通过不断地向败者树中读入记录,会产生多个 MINIMAX,直到最终所有叶子结点中的序号都为 2,此时产生的新的 MINIMAX 值的序号 2,表明此归并段生成完成,而此新的 MINIMAX 值就是下一个归并段中的第一个记录。(1)按照内存大小,将大文件分成若干长度为 l 的子文件(l 应小于内存的可使用容量),然后将各个子文件依次读入内存,使用适当的内部排序算法对其进行排序,将排好序的归并段重新写入外存,为下一个子文件排序腾出内存空间;(2)尽量减少初始归并段的数量 m,即增加每个归并段的容量;原创 2023-04-13 20:57:17 · 718 阅读 · 0 评论 -
【数据结构】堆排序与优先队列
树T中的任一结点的值不小于它的左子结点的值(如果左子结点存在),且不小于它的右子结点的值(如果右子结点存在),那么我们称树T是一个堆(heap)(1)若2i+1<n,则 a[i]≥a[2i+1] (2)若2i+2<n,则 a[i]≥a[2i+2]siftdown(a,i,n):循环的执行次数与表示堆的二叉树的层数有关。自上而下siftdown,根结点的左右子树都是堆,根结点不满足堆的特性。有n个结点的完全二叉树的层数为调用一次的时间复杂度O(log2n)b)将a[0]到a[i-1]之间的结点调整成堆。原创 2023-04-13 20:47:47 · 84 阅读 · 0 评论 -
【数据结构】树的遍历、二叉树的性质和相关计算
对于T中的每个结点k,如果它没有左(或右)子结点, 而k’是k的按中序的前面(或后面)结点,那么置结点k的左。无左子结点: t->ltag=1 或 t->lchild =NULL(中序的第一个)无右子结点: t->rtag=1 或 t-rchild =NULL(中序的最后一个)用一个指针root指向根结点,还用一个指针head指向按中序的最前面一个结点。ltag=1,lchild用来存放“线”,指向的是该结点的按中序的前面结点。具有n(n>0)个结点的完全二叉树的深度为[个,次数为2的非叶子结点有。原创 2023-04-13 20:41:35 · 94 阅读 · 0 评论 -
【数据结构】并查集
【代码】【数据结构】并查集。原创 2023-04-13 20:37:01 · 36 阅读 · 0 评论 -
【数据结构】Huffman算法—寻找最小加权外部路径长度的二叉树
如果结点序列具有n个结点,构造完的Huffman树一共有多少个结点(包括 叶子结点和非叶子结点):n+n-1=2n-1。出现次数多的结点,编码不会比出现次数少的结点长。寻找具有最小加权外部路径长度的二叉树的方法。寻找具有最小加权外部路径长度的二叉树的方法。Huffman树的非叶子结点的度:2。huffman编码是最优前缀编码。编码不唯一(子树不要求左右)“字符”只出现在叶子,原创 2023-04-13 20:32:10 · 308 阅读 · 0 评论