算法&数据结构
文章平均质量分 73
3w
这个作者很懒,什么都没留下…
展开
-
二叉堆
堆,很essential的数据结构,可惜严老大那本书没有怎么重视的感觉,但《算法导论》上有。可能严老大有自己的考虑。但从个人体会来看,应该还是非常有必要好好研究研究这个数据结构的,且不说堆是实现优先级队列的基础设施,更不说堆是众多图算法——如Dijkstra最短路径算法、Prim算法——的实现利器,单就堆排序及一些选择性算法——如寻找最大的K个值——而言,堆就不可忽视。我们学习和研究一种数据结构,思维曲线一般可以遵从以下三步骤:这里,我说的是针对学习和研究,在实际解决问题的过程中,往往是先分析需求,这里侧重转载 2011-05-16 18:41:00 · 869 阅读 · 1 评论 -
倒插法实现链表逆置
1: void invert(LinkedList &head) 2: { 3: LinkedList p;//指向当前工作节点 4: LinkedList pn;//指向工作节点的前驱节点 5: 6: //初始化,p指向链表第一个节点,head->next=NULL,即为单独的表头节点。 7: p = head->next; 8:原创 2011-05-23 15:48:00 · 1334 阅读 · 0 评论 -
尾递归(转)
2009-03-26 22:24 by Jeffrey Zhao, 25876 visits, 网摘, 收藏, 编辑 这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章,权当一次互联网资料的补充。:P 递归与尾递归 关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度:public class Node { public转载 2011-05-26 00:28:00 · 591 阅读 · 0 评论 -
des算法代码:内存移动算法代码
对于有k个元素的数组int a[k]={.......};写一个高效算法将数组内容循环左移m位, 比如:int a[6]={1,2,3,4,5,6},循环左移3位后得到结果{4,5,6,1,2,3}. 要求: 1.不允许另外申请数组空间,但可以申请少许变量; 2.不允许采用每次左移。 最直观的想法,就是从第一个元素开始,原创 2011-06-10 21:06:00 · 877 阅读 · 0 评论 -
新浪微博笔试题:删除字符串中多余的空格
给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 比如 “ I like football ” 会变成 "I like football"函数接口为:void RemoveExtraSpace(char* str);代码如下:void RemoveExtraSpace(char* str){ if(st转载 2011-06-27 21:35:00 · 1472 阅读 · 0 评论