摘要: 1 #pragma once 2 3 #include<cstdlib> 4 #include<cmath> 5 #include<cassert> 6 #include<iostream> 7 8 template<typename valueType> 9 class HashTable10 {11 //节点状态12 enum KindOfNode13 {14 Active, //活跃15 Empty, //空16 Deleted //已删除17 }; 18 public:19 //查找_key是否在表中,若在,返回0;否则返回- 阅读全文
posted @ 2011-03-30 17:52 狼哥2 阅读(825) 评论(0) 推荐(0) 编辑
摘要: google搜索到的头条:散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。我觉得这个解释太含糊,想要整明白哈希表,那就得明白哈希表到底有什么样的优势。数据结构中,有个时间算法复杂度O(n)的概念来衡量某种算法在时间效率上的优劣。哈希表的理想算法复杂度为O(1),也就是说利用哈希表查找某个值,系统所使用的时间在理想情况下为定值,这就是它的优势。那么哈希表是如何做到这一点的呢?我们定义一个很大的有序数组,想要得到位于该数组第n个位置的值,它的算法复杂度为O(1) 阅读全文
posted @ 2011-03-30 15:38 狼哥2 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 对于可变参数函数获取其可变的参数,我们可以用下列宏来得到: #include voidva_start(va_listap,last); typeva_arg(va_listap,type); voidva_end(va_listap); voidva_copy(va_listdest,va_listsrc); 在没有深入理解实现原理的情况下,这些宏应该如何的使用总是很难记忆,因此有必要搞清楚可变参数函数实现基本原理。 voidvariable_argument_func(intarg1,intarg2,...) { //我们应该怎样获取,这些可变的参数呢? //首先我们要了解,他们是紧挨着. 阅读全文
posted @ 2011-03-30 13:47 狼哥2 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 据说在欧洲曾经有个男孩自幼酷爱数学,但无奈家贫中学就辍学,但他一直自己学习,后来他感到自己突然发现了一个重大理论,并以这个理论的无比完美而欣喜,直到有一天,一次进城在书店看书的时候,发现原来他发现的理论就是微积分,并且已经存在1百多年了,你可以想象这个男孩当时的心情,最后他自杀了。随着经历的软件越来越多,发现设计模式越来越重要,特别是当你绞尽脑汁为了解决一个问题构想出一个完美的解决方案之时,你感觉到自己欣喜若狂,甚至开始飘飘然的自我陶醉于自己的聪明才智,但是你突然看到你这种方案原来就是其中的一个前人早已总结好的模式时,你会不会变得非常懊恼呢!反正我是有过这样的经历。当然这里的模式没有微积分的历 阅读全文
posted @ 2011-03-30 13:23 狼哥2 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 1.const常量,如constintmax=100;优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。2.const修饰类的数据成员。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类声明中初始化const数据成员,因为类的对象未被创建时,编译器不知道const数据成员的值是什么。const数据成员的初始化只能在类的构造函数的初始化表中进行。3.const修饰指针的情况 阅读全文
posted @ 2011-03-30 13:11 狼哥2 阅读(207) 评论(0) 推荐(0) 编辑