![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
data structure
文章平均质量分 56
虎扑最棒
这个作者很懒,什么都没留下…
展开
-
稀疏矩阵的转置
//稀疏矩阵的转置//使用了两个辅助数组//num : num[j] : 矩阵A中第j列非零元素的个数//cpot : cpot[j]: 矩阵A中第j列的第一个非零元素在其转置矩阵B的三元组顺序表的位置。//推出2个规则://1 cpot[1] = 1;//2 cpot[j] = cpot[j-1]+num[j-1];//算法思路://根据1,2规则计算num数组转载 2014-06-24 15:59:08 · 554 阅读 · 0 评论 -
稀疏矩阵的十字链表设计
刚才终于完完全全、彻彻底底的搞明白了稀疏矩阵十字链表的存储方式的实现与该算法的思想。我觉得有必要把自己的思路记下来,一呢等自己将来忘记了可以回过头来看,二呢希望与我一样对该存储方式迷惑的朋友可以通过我的文章得到一点点的启示。现在进入正题。 我们知道稀疏矩阵的三元组存储方式的实现很简单,每个元素有三个域分别是i, j, e。代表了该非零元的行号、列号以及值。那么在十字链表的存储方转载 2014-06-25 01:24:19 · 1489 阅读 · 2 评论 -
C语言实现的求二叉树的最大宽度(递归与非递归版本)
一、递归这里说的递归,并非是指整个函数递归,而是说其中一个子函数使用了递归。整个思路可以如下:要求取最大宽度,可以循环求取每一层的宽度,存入一个数组,然后在这个数组里求最大值即可,数组下标即层数(或高度)。对于求某一层的宽度,考虑把它写成一个子函数,参数考虑起始结点以及对应的层数,举例:对于根节点来说,其第三层的宽度,就是其左孩子的第二层的宽度与其右孩子的第二层的宽度之和。这样,我们可以写...原创 2018-07-26 05:53:04 · 17856 阅读 · 8 评论 -
二叉树的先序遍历,中序遍历,后序遍历的非递归C语言实现
栈的回顾在介绍几种遍历之前,先回顾下栈的概念,他是具有元素先进后出特点的数据结构,通过指针sp++/--进行入栈、出栈。具有典型形象的一个例子就是括号的匹配,即问形如“()(()())())”的序列,括号是否匹配正确?利用栈进行判断时,从头往后扫描,每当遇到一个“(”则入栈一次,而每当遇到一个“)”则出栈一次,最后若栈空则顺利匹配,否则不正确匹配。这个例子非常形象,可以作为一个思考的中介桥梁...原创 2018-08-04 21:31:10 · 14237 阅读 · 2 评论 -
C语言递归实现二路归并排序
二路归并意即需要将一个数组分成两个有序部分再归并,分成的两个部分再各自分成两个部分并有序化后再归并,如此往复直到最后每个部分只有1个元素,自然就有序了。这里,我们可以先将一个数组分为两个部分--左半部分,右半部分。两个部分都有序化后,用另一个函数连接这两个部分。这样,最终就实现了二路归并。函数代码样例如下:其中,MergeSort是递归实现的,要调用子函数MergeArray,而MergeAr...原创 2018-08-15 04:56:27 · 3349 阅读 · 0 评论 -
KMP字符串匹配的原理与C代码实现
kmp的精华在于next数组,该数组存储了当子串与主串发生不匹配时应该调整的下标位置。对于next数组,直观来说就是当发生不匹配时,已经匹配的部分串里的前缀后缀的最大公共部分。以“abababca”为例,若在字符c处未匹配,已匹配部分ababab的前缀后缀最大公共部分为4,即abab;若在第二个b处发生不匹配,则最大公共部分为1,即a。若在第一个b处发生不匹配,则最大公共部分为0(最大公共部分不能...原创 2018-08-13 02:28:14 · 304 阅读 · 0 评论 -
ccf csp201712-2 游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时...原创 2019-04-02 23:56:45 · 456 阅读 · 0 评论