
数据结构和算法
文章平均质量分 85
xdtongyuan
这个作者很懒,什么都没留下…
展开
-
KMP算法详解——适合初学KMP算法的朋友
【KMP算法简介】 KMP算法是一种改进后的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。通过一个辅助函数实现跳过扫描不必要的目标串字符,以达到优化效果。 【传统字符串匹配算法的缺憾】 Bi转载 2013-06-08 21:47:03 · 588 阅读 · 0 评论 -
单链表逆置
#include #include /*链表节点定义*/ typedef struct Lnode { int data; struct Lnode *next; }Lnode, *LinkList; //定义节点,头指针类型名 /*尾插法创建单链表*/ void Create_LinkList_B(LinkList &L) { int x, cycle = 1; Ln转载 2013-06-07 10:36:21 · 624 阅读 · 0 评论 -
最新面试题集锦
http://blog.youkuaiyun.com/tianmo2010/article/details/7265967 1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。 例子: func(7) = 4,可以证明最少需要4次运算 n = 7 n-1 6 n/2 3 n-1 2 n/2转载 2013-06-20 23:37:39 · 529 阅读 · 0 评论 -
全排列和组合的实现算法
一 全排列算法原理和实现 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。 2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3转载 2013-06-21 09:35:06 · 712 阅读 · 0 评论 -
已排好序的整形数组的整合
例如已知数组a前半部分a[0,mid - 1],后半部分a[mid,num-1],现前半部分和后半部分均已排好序。 要求:实现a数组的从小到大排序。空间复杂度为O(1).(百度笔试) [cpp] view plaincopy #include void MergeIntData(int *a, const unsigned转载 2013-08-19 21:42:28 · 634 阅读 · 0 评论 -
//链表的模板实现
//链表的模板实现 //By KiRa 07/08/28 #include iostream> using namespace std; /* Length = 0 IsEmpty = 1 List is 2 6 IsEmpty = 0 First element is 2 Length = 2 Deleted element is 2 List is 6 *转载 2013-08-13 20:53:57 · 592 阅读 · 0 评论 -
数据结构算法集---C++语言实现
堆栈数据结构 stack.h // // // /**/#include templateclass Stack; template class StackNode { friend class Stack; private: Type data; StackNode *link; StackNode(Type D=0,StackNode *L=NULL):link(L),data(D)...{}转载 2013-08-13 21:01:23 · 837 阅读 · 0 评论 -
二分查找算法分析
二分查找算法的思想很简单,《编程珠玑》中的描述: 在一个包含t的数组内,二分查找通过对范围的跟综来解决问题。开始时,范围就是整个数组。通过将范围中间的元素与t比较并丢弃一半范围,范围就被缩小。这个过程一直持续,直到在t被发现,或者那个能够包含t的范围已成为空。 Donald Knuth在他的《Sorting and Searching》一书中指出,尽管第一个二分查找算法早在194转载 2013-08-15 22:30:02 · 618 阅读 · 0 评论