- 博客(20)
- 资源 (10)
- 收藏
- 关注
原创 交换a和b
// 交换a和b.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"void swap1(int& a, int& b){ int c = a; a = b; b = c;}/*加减法运算达到交换a和b,缺点:做a+b 和 a-b运算时可能会导致数据溢出。*/void swap2(int& a, int& b)
2015-01-27 13:32:22 1251
原创 有符号与无符号变量之间的转换
// 有符号变量和无符号变量的转换.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"char getChar(int x, int y){ char c; unsigned int a = x; (a+y > 10)? (c=1):(c=2); return c;}/*当表达式当中存在有符号类型和无符号类
2015-01-27 13:30:47 2223
原创 C++算法之 斐波那契数列
题目:写一个函数,输入n,求斐波那契数列的第n项。 方法1:递归:int fib2(int n){ if(n == 0) return 0; if(n == 1) return 1; return fib2(n-1)+fib2(n-2);}缺点:如果n比较大,那么递归程度比较深 方法2:int fib(int n){ int
2015-01-21 10:52:36 27682 2
原创 int *p=malloc(100); 求 sizeof(p)
int *p=malloc(100); 求 sizeof(p)sizeof(p) = 4;sizeof(p) 只能测定 指针大小,32位机上得4。sizeof 不能测定动态分配的数组大小。strlen 可用于测定动态分配的字符数组长度但不适合int._msize() 可用于测定动态分配的数组用去的内存,通常比数组单元要多一点。 int _tmain(int argc
2015-01-20 16:54:19 22770 1
原创 TCP和UDP的区别
昨天去面试,被问到TCP与UDP的区别,网络这一块完全不会:TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B
2015-01-20 15:55:42 668
原创 C++4种类型转换
C++类型转换const_cast,去const属性。static_cast,静态类型转换。如int转换成char。dynamic_cast,动态类型转换。如子类和父类之间的多态类型转换。reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。 const_cast:const int& a = 9; const_cast(a) = 10;
2015-01-16 16:18:12 1230
原创 常用的七大排序算法
1:冒泡排序:// BubbleSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*冒泡排序是稳定排序时间复杂度是 O(n^2)*/void Swap(int& a, int& b){ int temp = a; a =
2015-01-16 11:49:24 1992 1
原创 C++算法之 在二叉树当中找出和为某一值的路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12和10, 5, 7。采用先序遍历以及 栈的
2015-01-13 11:46:05 2295
原创 C++算法之 求二叉树两个节点的最低公共节点
方法1:递归方法:(1)如果两个节点分别在根节点的左子树和右子树,则返回根节点(2)如果两个节点都在左子树,则递归处理左子树;如果两个节点都在右子树,则递归处理右子树bool FindNode(BTree* pRoot, BTree* pNode){ if (pRoot == NULL || pNode == NULL) { return false; }
2015-01-13 09:25:26 992
原创 C++算法之 判断是否为完全二叉树
判断完全二叉树:完全二叉树,除最后一层外,每一层上的节点树都达到了最大值;在最后一层上只缺少右边的若干节点!算法思路:按层次(从上到下,从左到右)遍历二叉树,当遇到一个节点的左子树为空时,则该节点右子树必须为空,且后面遍历的节点左右子树都必须为空,否则不是完全二叉树。代码:bool IsCompleteBTree(BTree* pRoot){ if (pRoot =
2015-01-12 11:36:41 11200
原创 MFC实现2048游戏(一)
MFC先实现2048游戏:总共有两个场景,欢迎场景与游戏场景,在MFC下面,一个场景也就是一个对话框: 第一步:实现欢迎场景:很简单的插入一个对话框:防止两个按钮,一个进入游戏,一个退出游戏,其他界面上自己可以加载图片好看一点;这个类为:CStartDlg因为我们运行程序首先出来的是欢迎界面,所以在2048App当中要把主对话框改为 CStartDlg
2015-01-09 11:33:53 8078 1
原创 MFC实现2048游戏(二)
上一篇,主要介绍了UI部分,其实根本没有UI,自己做这个游戏也是就是实现一下逻辑功能,其实游戏的逻辑是最难的,UI谁都可以学会,逻辑却是需要理解的!主要的逻辑:选择了二维数组 与 双端队列(deque);因为双端队列(queue)可以操作[]下标,用起来比较方便:int tempArray[Count][Count];memcpy(tempArray,m_nArray,sizeof
2015-01-09 11:00:16 7477 1
原创 C++算法之 判断是否为平衡二叉树 求二叉树的镜像
1:判断是否为平衡二叉树://方法1:int TreeDepth(BTree* pRoot){ if (pRoot == NULL) return 0; int nLeftDepth = TreeDepth(pRoot->m_pLeft); int nRightDepth = TreeDepth(pRoot->m_pRight); return (nLeftD
2015-01-07 17:48:21 914
原创 MFC 关闭窗口时候保存窗口位置
CWinApp::WriteProfileInt Call this member function to write the specified value into the specified section of the application's registry or .INI file.CopyBOOL WriteProfile
2015-01-06 16:39:45 2777
原创 C++算法之 求二叉树中叶子节点的个数 与 判断两棵二叉树是否结构相同
//叶子节点的个数/*(1)如果二叉树为空,返回0(2)如果二叉树不为空且左右子树为空,返回1(3)如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数*/int GetLeafNodeNum(BTree* root){ if(root == NULL) return 0; if(root->m_pLeft == NUL
2015-01-06 14:50:17 4389
原创 C++算法之 求二叉树第k层的节点的个树
思路:如果树为空或者k如果k=1,那么节点个数为1;如果k>1,那么第k层 总节点的个数等于 左子树k-1层的节点个数+右子树k-1层节点的个数+1代码如下:// BTNumOfKLevel.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class
2015-01-06 10:55:15 1583
原创 MFC加速键的使用
MFC加速键的使用方法:第一步:在资源编辑器里面添加:Accelaretor资源,然后在其中添加加速键。每个加速键都要有一个对应ID,一般格式如下:响应ID 修饰键 键 键类型ID_FILE_OPEN Ctrl O VURTKEY 第二步:就是在.h文件中定义一个快捷键对象HACCEL m_hAccel; 第三步:在CPP文件加载加速键资
2015-01-05 17:27:59 2971
原创 C++算法之 二叉搜索树转换为双向链表
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的方向: 分析:1:由于要求链表是有序的,可以借助二叉树中序遍历,因为中序遍历算法的特点就是从小到大访问结点。当遍历访问到根结点时,假设根结点的左侧已经处理好,只需将根结点与上次访问的最近结点(左子树中最大值结点)的指针连接好即可。进而更新当前链表的最后一个结点指针。
2015-01-05 15:17:56 1636
原创 二叉查找数
二叉查找树重要性质: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
2015-01-05 10:13:19 1057
原创 C++算法之 求二叉树的节点个数、深度、四种遍历方法
//节点的数据结构class BTree{public: int m_nValue; BTree* m_nLeft; BTree* m_nRight;public: BTree(int value) { m_nValue = value; }};一:求二叉树的节点个数:/*求二叉数中的节点个数递归
2015-01-04 11:42:20 24286 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人