
Data structure
文章平均质量分 66
fullstack_lth
这个作者很懒,什么都没留下…
展开
-
C++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权转载 2015-09-02 14:49:16 · 449 阅读 · 0 评论 -
new和malloc区别
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4、new可以原创 2016-03-30 23:20:27 · 483 阅读 · 0 评论 -
哈夫曼编码
一、 伪代码HUFFMAN(C)N=|C|; Q=C;for i=1 to n-1 allocate a new node zz.left=x=EXTRACT-MIN(Q);z.right=y= EXTRACT-MIN(Q);z.freq=x.freq+y.freq;INSERT(Q,z);return EXTRACT-MIN(Q); 二、算法分析原创 2015-06-06 16:24:02 · 3120 阅读 · 1 评论 -
解决hash冲突的方法
虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法 用开放定址法解决冲突的做法是:当冲突发生时,使用原创 2016-07-23 13:45:31 · 1024 阅读 · 0 评论 -
如何根据树的两个遍历顺序确定另外一个遍历顺序
前序遍历:1 2 4 8 9 10 11 5 3 6 7 (规律:根在前;子树在根后且左子树比右子树靠前);中序遍历:8 4 10 9 11 2 5 1 6 3 7 (规律:根在中;左子树在跟左边,右子树在根右边);后序遍历:8 10 11 9 4 5 2 6 7 3 1 (规律:根在后;子树在根前且左子树比右子树靠前);其它例子:前序遍历:ABDECFG中序遍历:DBEAF原创 2016-03-25 20:41:17 · 3057 阅读 · 0 评论 -
用指针、引用或直接传值来分配内存
一、概念值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作引用传递:形参相当于是实参的“别名”,对形参的操作其实就是对实参原创 2016-03-30 23:36:28 · 2430 阅读 · 0 评论 -
继承、 虚继承和虚函数表对类的大小的影响
一、真空类class CNull{};长度:1内存结构:??评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。 二、空类class CNull2{public: CNull2(){printf("Construct/n");} ~CNul原创 2016-03-30 23:27:28 · 5611 阅读 · 0 评论 -
static详解
一、c/c++中static区别static主要有三个作用: (1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量 在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说a原创 2016-03-30 22:59:21 · 2833 阅读 · 0 评论 -
二进制转换为十进制
#include #include #include #include int pow(int m ,int n ) { int k; int s; if(1 == n) { returnn; } elseif( n > 1 )原创 2015-10-26 09:46:08 · 453 阅读 · 0 评论 -
去除字符串头尾空格
问题描述:去除字符串首尾空格方法一;自己实现#include #include #include char * delete_space(char src [])// 删除首尾空格 {char *dec = src;char *p1 = src ; char *p2;while( *p1 == ' '||*p1 = '\t'){ *p1++; }原创 2015-10-26 09:56:06 · 990 阅读 · 0 评论 -
strstr实现
strstr:在字符串中查找指定字符串的第一次出现:不需要调用其他库函数做法:[cpp] view plaincopyprint?char* strstr(const char *s1, const char *s2) { int n; if (*s2) {转载 2015-10-14 15:35:12 · 406 阅读 · 0 评论 -
strcpy函数详解
strcpy(s1,s2);strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy.这样s1在内存中的存放为:ch\0;在cout<<s1<<endl时,结果为ch;事实上,在内存里面是这样的存储结构:ch\0na如果说s1的长度是6,那是错误的.你没有弄清strlen与sizeof的意思。strlen函数的意思是测试字符串...原创 2015-10-09 10:37:36 · 25759 阅读 · 3 评论 -
vs2013错误 C1047解决办法
我用VS2013编译程序时,报以下错误:(其中用到了别人提供的库triangle.lib) 1>LINK : fatal error C1047: 对象或库文件“.\lib\triangle.lib”是使用比创建其他对象所用编译器旧的编译器创建的;请重新生成旧的对象和库 1>LINK : fatal error LNK1257: 代码生成失败原创 2015-09-07 09:51:34 · 8448 阅读 · 0 评论 -
判断单链表是否存在环以及求出环的入口
问题描述: 给定一个单链表,判断是否存在环。求解思路:给两个速度不一样的指针,进入一个循环,查看二者是否相等。算法代码:bool Is_has_loop(link_list *head){ if(head == NULL) return; link_list *fast,*slow; fast = slow = head;原创 2015-06-20 16:05:55 · 733 阅读 · 0 评论