![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 71
lanyanjiayu
这个作者很懒,什么都没留下…
展开
-
平衡二叉树之一(基本性质、查询、添加) .
平衡二叉树(Balanced BinaryTree)又被称为AVL树。它具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。一、平衡二叉树的基本性质根据二叉树的性质高度为h的AVL树,节点数N最多为2h-1;其最少节点树为(((1 + √5) / 2)h+2 - ((1 - √5) / 2)h+2)/ √5 - 1。最少节点数n原创 2013-12-26 15:29:55 · 1051 阅读 · 0 评论 -
将string转换成char* (转)
string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为char* 有3中方法:1.data如:string str="abc";char *p=str.data();2.c_str如:string str="gdfd"; char *p=str.c_str();3.copy比如string str="he转载 2013-12-10 11:39:31 · 791 阅读 · 0 评论 -
深入浅出单例模式---不仅仅是单例
前言:看到我的标题你也许会很奇怪,明明是讨论单例模式,为什么又说不仅仅是单例模式呢?图样图森破!我在这里想和大家分享的不仅仅是JAVA设计模式中的单例模式(Singleton),还有C++中的单例模式,以及单例模式的原理。总之一句话,不服来辩!对于很多从事JAVA编程或者C++编程超过1年的工友来说,就单例模式而言可谓是熟悉的不能再熟悉了吧?So easy!简单的说,就是保持对一个实例的全局范转载 2013-12-10 13:32:42 · 554 阅读 · 0 评论 -
C++单例模式
#include using namespace std; //单例类的C++实现 class Singleton { private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singleton* instance;//惟一实例 int var;//原创 2013-12-10 14:03:25 · 541 阅读 · 0 评论 -
C++类静态成员的初始化
记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!#includeiostream>usingnamespacestd;classtest{public:staticint num;};inttest::num=转载 2013-12-09 17:28:39 · 1105 阅读 · 0 评论 -
c++迭代器的使用与简介
除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。 标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现代C+原创 2013-12-09 15:44:32 · 539 阅读 · 0 评论 -
C++ map的使用
来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博客 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring;原创 2013-12-03 09:41:01 · 470 阅读 · 0 评论 -
C++ map的基本操作和用法
1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,0原创 2013-12-03 09:40:23 · 464 阅读 · 0 评论 -
WaitForSingleObject
临界区临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection );产生临界区void DeleteCriticalSection(LPCRITICAL_SECTIO原创 2013-09-13 09:35:58 · 624 阅读 · 0 评论 -
红黑树
之前看了很多写红黑树的博客,但是感觉都讲的不太清楚!没说这样操作如何使他保持平衡的,于是疑惑重重,就看不下去了,一次不经意看到一个人说维基百科的红黑树讲的好,我就随便点了一下一看——这下疯了~,怎么讲的这么好!可以说是把一个复杂的问题,讲得简单化!这太幸福了! 于是我就慢慢学会了!强烈推荐维基的这个讲解,再也找不到比这还好的讲解了!不知道它上边其它的怎么样,反正这个很好!!既然学会了,走过来了,我转载 2014-01-06 14:20:24 · 735 阅读 · 0 评论 -
平衡二叉树(解惑)
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(lo转载 2014-01-06 14:11:02 · 964 阅读 · 0 评论 -
平衡二叉树之二(删除节点) .
类似于添加操作,从平衡二叉树中删除节点也分为两步,第一步完成节点的删除,第二步找到因为删除而导致不满足平衡二叉树要求的子树并对其进行调整。一、 删除节点从平衡二叉树中删除节点更为复杂。首先第一步需要找到要删除的节点x,并分情况进行处理:如果要删除的节点为叶子节点,就找到了要删除的节点如果要删除的节点为只有一棵子树的节点就找到了要删除的节点如果要删除的节点既有左子树,又有右子树,原创 2013-12-26 15:27:35 · 1062 阅读 · 0 评论 -
AVL Tree 平衡二叉树基本插入删除节点功能的实现 .
简述:实现AVL 树,主要是两个功能 : 插入某节点和删除某节点AVL Tree的定义,1. 是一棵二叉搜索树(故而每个节点是惟一的, 如果出现重复数字会破坏平衡树的算法)2. 每个节点左右子树的高度之差(平衡因子)相差最多为1实现:为了使所得的二叉树为平衡二叉树,首先在BSTNode中加了一个计算节点高度的方法getHeight(), 当两个节点高度相原创 2013-12-25 19:42:53 · 1029 阅读 · 0 评论 -
平衡二叉树 1
平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1.只要二叉树上有一个节点的平衡因子的绝对值大于1,那么这颗平衡二叉树就失去了平衡。假设我们已经有棵平衡二叉树,现在让我们来原创 2013-12-25 19:34:20 · 600 阅读 · 0 评论 -
平衡二叉树
对于二叉查找树,尽管查找、插入及删除操作的平均运行时间为O(logn),但是它们的最差运行时间都是O(n),原因在于对树的形状没有限制。平衡二叉树又称为AVL树,它或者是一棵空树,或者是有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。二叉树的的平衡因子BF为:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树的所有结点的平衡因子为只可能是:-1、转载 2013-12-25 20:05:30 · 839 阅读 · 0 评论 -
动画演示平衡二叉树旋转
转自:http://2002qiqi.blog.163.com/blog/static/17489036200912111929241/ 我们知道在二叉查找树中,如果插入元素的顺序接近有序,那么二叉查找树将退化为链表,从而导致二叉查找树的查找效率大为降低。如何使得二叉查找树无论在什么样情况下都能使它的形态最大限度地接近满二叉树以保证它的查找效率呢?前苏联科学家G.M. Adelson-原创 2013-12-25 19:47:36 · 6513 阅读 · 0 评论 -
平衡二叉树AVL的笔记
二叉树左子树都小于根节点,右子树都大于根节点。可以动态维护这棵树(因为是树结构,可以有限步完成插入),所以是动态查找算法。时间复杂度为O(logn)在46.5%的情况下,需要把二叉树平衡化成“平衡二叉树”。平衡二叉树平衡二叉树(Balanced>平衡二叉树算法思想若 向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性。首先要找出插入新结点后失去平衡的最小子树根结原创 2013-12-25 20:04:34 · 733 阅读 · 0 评论 -
平衡二叉树的生成理论
本文由作者收集整理所得,作者不保证内容的正确行,转载请标明出处。作者:关新全1、AVL的插入算法描述在平衡的二叉排序树T上插入一个关键码为kx的新元素,递归算法可描述如下:(一) 若T为空树,则插入一个数据元素为kx的新结点作为T的根结点,树的深度增1;(二) 若kx和T的根结点关键码相等,则不进行插入;(三) 若kx小于T的根结点关键码原创 2013-12-25 20:02:07 · 1189 阅读 · 1 评论 -
平衡二叉树
形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是: 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR ,令> (a)平衡二叉树 (b)非平衡二叉树 图8.3 平衡二叉树与非平衡二叉树相应地定义>动态平衡技术 1.动态平转载 2013-12-25 19:32:32 · 694 阅读 · 0 评论 -
C++类静态成员的初始化
记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!#include iostream>using namespace std;class test{public:static int num;};int test:原创 2013-08-30 11:14:51 · 613 阅读 · 0 评论 -
C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点原创 2013-08-30 09:33:34 · 460 阅读 · 0 评论 -
vc注册表函数大全
用于操作注册表的编程,参考:http://hi.baidu.com/sicceer/blog/item/9238ddf8170eaf02d9f9fda8.htmlhttp://hi.baidu.com/sicceer/blog/item/526c8f1242bd3dc3c3fd78af.htmlhttp://www.vckbase.com/document/viewdoc/?id=44原创 2012-06-26 16:44:35 · 1021 阅读 · 0 评论 -
vc6中release模式调试的设置 .
要在vc6.0的release模式下进行调试,需进行以下配置修改:1. project ->settings;2. C++ 标签页中,optimization选项 修改为 “default”; Debug info 修改为“program database”;3.Link标签页中,勾选“Generate debug info”原创 2012-06-26 15:13:53 · 857 阅读 · 0 评论 -
CString转char * ,string .
CString 头文件#include string 头文件#include CString 转char *CString cstr;char *p = (LPSTR)(LPCTSTR)cstr;string 转 CStringCString.format(”%s”, string.c_str());char 转 CStringCString.format(”%s”原创 2012-07-06 19:51:17 · 329 阅读 · 0 评论 -
生成随机字符串
估摸着以后极有可能使用到,于是写了一个生成随机字符串的函数。可以自定义生成规则,生成字符串长度。模仿了MS的函数风格,生成规则使用宏的或且规则,返回值使用了布尔型。这里使用布尔返回可能作用不大。直接贴代码吧,同样是两个文件。RandomString.h#pragma once #define RdAllType 0x07 //原创 2012-05-03 14:55:12 · 2469 阅读 · 0 评论 -
cstring转char
使用CString成员函数GetBuffer():CString::GetBufferLPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException );返回值:一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。参数: nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不原创 2012-05-03 09:55:41 · 438 阅读 · 0 评论 -
VC单选按钮控件(Radio Button)用法
先为对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上, 第一种: ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上 ((CBu原创 2012-06-28 14:05:53 · 1114 阅读 · 0 评论 -
指针问题
指针问题http://wenku.baidu.com/view/1328d7c158f5f61fb73666cd.html原创 2013-08-29 11:05:46 · 434 阅读 · 0 评论 -
标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str原创 2013-08-29 09:13:47 · 426 阅读 · 0 评论 -
MFC应用程序消息处理及其窗口创建和销毁过程函数调用顺序
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到OnWnd原创 2013-05-17 19:04:46 · 592 阅读 · 0 评论 -
EndDialog和CDialog::OnOK()
第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialog。第二,OnClose()和OnDestroy() 在单视图程序中,根据>所讲,程序退出时执行的操作顺序原创 2013-05-17 17:21:10 · 1374 阅读 · 0 评论 -
什么是线程,如何创建线程 .
如果你学习过操作系统,那么一定对进程的概念非常熟悉,其实,几乎每种操作系统都支持进程——进程就是在某种程度上相互隔离的、独立运行的程序。进程的引入大大提高了任务并发执行的效率,但是,进程也因为耗费资源太大等缺陷限制了它在并行处理方面的发展。不过线程的引入改变了这一状况,线程也称做轻量级进程。就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量原创 2013-04-24 15:20:34 · 882 阅读 · 0 评论 -
关于eclipse如何将已有的工程导入 .
Eclipse中打开已有的工程.其实就是工程的导入Eclipse中打开已有的工程.其实就是工程的导入::在开始使用Eclipse的时候,会发现一个问题,那就是如何打开一个现有的Eclipse工程,开始在菜单中找了好久也没找到。其实,Eclipse生成的结果不像VC,Jcreator那样可以直接打开,若要打开非workspace文件夹下的其他已有工程,可以打开菜单file->import原创 2013-01-14 14:38:19 · 418 阅读 · 0 评论 -
vc6.0快捷键大全
F1: 帮助Ctrl+O :OpenCtrl+P :PrintCtrl+N :NewCtrl+Shift+F2 :清除所有书签F2 :上一个书签Shift+F2 :上一个书签Alt+F2 :编辑书签Ctrl+F2 :添加/删除一个书签F12 :Goto definitionShift+F12 :Goto referenceCtrl+'Num+' :Displays the next symbol原创 2012-10-26 10:52:08 · 445 阅读 · 0 评论 -
vc或vs调出标点快捷键,设置tab等于4个空格
1.先ctrl+r,再ctrl+w2,设置tab等于4个空格,工具->选项->(文本)编辑器->tab原创 2012-10-26 09:43:49 · 5692 阅读 · 0 评论 -
vector
Vector 类在 java 中可以实现自动增长的对象数组; vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 矢量、媒介、载体。 (1)矢量:具有方向性的量。 (2) 编程语言方面:vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算原创 2012-07-24 18:35:51 · 477 阅读 · 0 评论 -
c++中头文件stdlib.h主要包含的函数
包含函数: 1函数名称: calloc 函数原型: void * calloc(unsigned n,unsign size); 函数功能: 分配n个数据项的内存连续空间,每个数据项的大小为size 函数返回: 分配内存单元的起始地址,如果不成功,返回0 2函数名称: free 函数原型: void free(void* p); 函数功能: 释放p所指的内存区转载 2011-11-09 15:57:40 · 702 阅读 · 0 评论