摘要:数据结构中讲到关于字符串匹配算法时,提到朴素匹配算法,和KMP匹配算法。朴素匹配算法就是简单的一个一个匹配字符,如果遇到不匹配字符那么就在源字符串中迭代下一个位置一个一个的匹配,这样计算起来会有很多多余的不符合的匹配做了冗余的比较。假设源字符串长n,字串长m 该算法最差时间复杂度为 m*(n-m+1...
阅读全文
摘要:如题,面试题中的一道编程题,随便给定两个日期,不适用日期库函数计算两个日期之间相差的天数。思路:分别计算两个日期到当前年初第一天的天数days1,days2,然后计算两个日期相差年数(左闭右开 [) )的天数days.那么两个日期相差的天数即为days+days2-days1.代码如下:/*****...
阅读全文
摘要:对于共享资源,有一个很著名的设计模式:资源池(resource pool)。该模式正是为解决资源频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个了,使用完毕后再放回去。我们可以...
阅读全文
摘要:红黑树:红黑树是一棵二叉搜索树,树中的每一个结点的颜色不是黑色就是红色。可以把红黑树视为一棵扩充的二叉树,用外部结点表示空指针。特性1:根结点和所有外部结点的颜色是黑色。特征2:从根节点到外部结点的途中没有连续两个结点的颜色是红色。特征3:所有从根节点到外部结点的路径上都有相同数目的黑色结点。从红黑...
阅读全文
摘要:多态性(polymorphism)是指允许通一个函数(或是操作符)有不同版本,对于不同的对象执行不同的版本。c++支持一下两种多态(1)编译时的多态性,表现为函数名(或操作符)的重载。(2)运行时的多态性,表现为派生类和虚函数来实现。函数名重载:编译器能够比较具有同名函数的特征,通过识别实参的数目和...
阅读全文
摘要:题目:编写一个函数,它用于对一个任何类型的数组进行排序。算法核心代码sort函数实现/**功能说明:sort函数可以对不同类型的数据进行排序参数:1、一个指向需要排序的数组的第一个值的指针。2、数组中元素的个数。 3、每个数组元素的长度。4、一个指向比较回调函数的指针 **/void sort(vo...
阅读全文
摘要:程序中每个函数都位于内存中的某个位置,所以存在指向那个位置的指针------函数指针。 函数指针最常用的两个地方是:转换表和作为参数传递给领一个函数。和其他的指针一样,对函数指针执行间接访问之前必须把它初始化为指向某个函数。int f(int);int (*pf)(int) = &f;这...
阅读全文
摘要:联合和结构类似,但是他的行为方式和结构不同。联合的所有成员引用的是内存中的相同位置。当你想在不同时刻把不同的东西存储于同一个位置时,就可以使用联合了。union{ float f; int i;}fi;int main(){ fi.f = 3.14159; printf(...
阅读全文
摘要:实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式。/************************************************************************* > Created Time: 2014年06月17日 星期二 23时22...
阅读全文
摘要:一般我们常说的内存泄露是指堆内存的泄露,堆内存是指程序从堆中分配的,大小任意的(内存大小可以在程序运行期间决定),使用完之后必须显式的释放。应用程序一般使用malloc,realloc,new等从堆内存中分配得到一块内存,使用完时候,程序必须负责相应的free,和delete释放该内存,否则,...
阅读全文
摘要:1、c++/c语言中不少地方,数组和指针可以相互替换使用,容易让人产生一种错觉,指针和数组是等价的。数组要么在静态存储区域创建,如全局数组;要么在栈上创建如函数内的数组。数组的名称对应着(而不是指向)一块内存,它的地址和容量在其生命周期内保持不变,数组的内容可变。指针可以指向任意类型的内存块,它的特...
阅读全文