c/c++
yzs87
专注于PostgreSQL、MySQL、GreenPlum及其生态
展开
-
二叉树的非递归后序遍历算法
前序、中序、后序的非递归遍历中,要数后序最为麻烦,如果只在栈中保留指向结点的指针,那是不够的,必须有一些额外的信息存放在栈中。方法有很多,这里只举一种,先定义栈结点的数据结构typedef struct{Node * p; int rvisited;}SNode //Node 是二叉树的结点结构,rvisited==1代表p所指向的结点的右结点已被访问过。lastOrderTraverse转载 2013-10-01 09:31:08 · 655 阅读 · 0 评论 -
深度优先遍历算法的非递归
深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为: 假设图采用邻接矩阵作为存储结构,具体算法如下: 深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为: 假设转载 2013-11-27 09:44:12 · 1696 阅读 · 0 评论 -
二进制数反转
(1)使用了归并排序的思路(最快)但是时间复杂度比归并排序要小,每行代码都相当于完成了一次归并#include unsigned RevBit(unsigned x) { x=(x&0x55555555)>1)&0x55555555; x=(x&0x33333333)>2)&0x33333333; x=(x&0x0f0f0f0f)>4)&0转载 2013-11-27 16:35:12 · 1233 阅读 · 0 评论 -
vc++ WinMain
创建一个完整的窗口需要经过下面四个操作步骤:1、设计一个窗口类;2、注册窗口类;3、创建窗口;4、显示及更新窗口。#include #include LRESULT CALLBACK WinSunProc( HWND hwnd,//窗口句柄UINT uMsg,//message identifierWPARAM wParam,//第一个消息原创 2013-12-15 23:56:53 · 1010 阅读 · 0 评论 -
Tcp SOCKET 编程
客户端::::#include #include void main(){//加载套接字库WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );//请求一个1.1的版本的Winsocket库err = WSAStartup( wV原创 2013-12-25 11:00:47 · 666 阅读 · 0 评论 -
学习C++2 函数篇
char *init (int ht=24,int wd,char ba);这个声明不对,在形参表中,具有默认实参的形参应该出现在形参表的末尾原创 2013-12-23 23:04:00 · 845 阅读 · 0 评论 -
GetMemory的典型例子
//NO.1: 程序首先申请一个char类型的指针str,并把str指向NULL(即str里存的是NULL的地址,*str为NULL中的值为0),调用函数的过程 中做了如下动作:1申请一个char 类型的指针p,2把str的内容copy到了p里(这是参数传递过程中系统所做的),3为p指针申请了100个空间,4返回Test函数.最后程序把字符 串hello world拷贝到str指向的内存空间里.到转载 2013-12-23 22:04:35 · 639 阅读 · 0 评论 -
学习C++ 1
3.迭代器简介除了使用下标来访问vector对象的元素外,标准库还提供了访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并且遍历元素的数据类型。1.容器的iterator类型每种容器类型都定义了自己的迭代器类型,如vector:vector ::iterator iter;变量名为iter。2.begin和end操作每种容器都定义了一队命名为begin原创 2013-12-23 21:53:46 · 594 阅读 · 0 评论 -
函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意原创 2013-12-23 22:25:37 · 897 阅读 · 0 评论 -
队列
/***002*DynaLnkQueue.cpp - 动态链式队列,即队列的动态链式存储实现003*004*005*题目:实验3-2 队列的动态链式存储实现00原创 2014-01-08 21:40:04 · 753 阅读 · 0 评论 -
C++中相对路径与绝对路径以及斜杠与反斜杠的区别------路径中有空格为什么打不开文件
正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径:1、绝对路径表示相对容易,例如pDummyFile =fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); 给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\",vc工程默认访问的目录是工程目录,相对路径转载 2014-01-10 21:42:20 · 2622 阅读 · 0 评论 -
vc++6.0中使代码对齐
选中代码,Alt+F8就可以了原创 2014-01-14 10:01:49 · 1493 阅读 · 0 评论 -
GetMemory函数详解
#include #include #include using namespace std;char *GetMemory(char *&p, int num){p = (char *)malloc(sizeof(char)*num);//p = new char[num];return p;}int main(void){char *转载 2014-02-06 21:32:40 · 902 阅读 · 0 评论 -
数组中 &a和 &a[0],a 的区别
这里&a[0]和&a 到底有什么区别呢?a[0]是一个元素,a 是整个数组,虽然&a[0]和&a的值一样,但其意义不一样。前者是数组首元素的首地址,而后者是数组的首地址。举个例子:湖南的省政府在长沙,而长沙的市政府也在长沙。两个政府都在长沙,但其代表的意义完全不同。这里也是同一个意思。a和&a[0]是一样的。main(){int a[5]={1,2,3,4,5};i转载 2013-10-16 21:27:06 · 1130 阅读 · 0 评论 -
打印9*9乘法表
#include void main(){int i,j;for(i=1;i{for(j=1;j{printf("%d*%d=%d ",j,i,i*j);}printf("\n");}}原创 2013-10-16 08:57:25 · 612 阅读 · 0 评论 -
构造函数的参数缺省
构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。在构造函数中也可以采用这样的方法来实现初始化。#include using namespace std;class A{ public : A(int aa=0,int bb=00); //在声明构造函数时指定默认参数 int volume原创 2013-09-20 09:06:20 · 2902 阅读 · 0 评论 -
链表 及linux中的链表
链表是C语言编程中常用的数据结构,比如我们要建一个整数链表,一般可能这么定义:?1234struct int_node { int val; struct int_node *next;};为了实现链表的插入、删除、遍历转载 2013-09-21 16:53:17 · 726 阅读 · 0 评论 -
C++ 虚函数表解析
前言转自 http://blog.csdn.net/haoel/article/details/1948051C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,转载 2013-09-21 08:25:28 · 502 阅读 · 0 评论 -
解决VC++6.0启动_【打开文件】_对话框时出现的“0x5003eaed”问题!!!
其实最正确的方法应该是这样的(不知道管理怎么回事,网友推荐答案并不能解决问题啊):“0x5003eaed指令引用的"0x00000000"内存。该内存不能为"read"。要终止程序,请单击"确定"。要调试程序,请单击"取消"。” 的一个对话框。启动 打开文件 对话框,在 Visual c + + 中使用键盘快捷键或从 文件 菜单中将产生以下错误: 访问冲突 (0xC0000转载 2013-09-19 10:15:30 · 1834 阅读 · 0 评论 -
C++常数据成员精讲—const关键字
C++常数据成员精讲—const关键字内容提要:用const修饰的定义对象称为常对象;用const修饰的声明成员函数称为常成员函数;用const修饰的声明数据成员称为常数据成员。变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。用const修饰的声明数据成员称为常数据成员。有两种声明形式:const int c转载 2013-09-19 10:02:55 · 860 阅读 · 0 评论 -
循环队列判断满与空
何时队列为空?何时为满?由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时头尾指针均相等。因此,我们无法通过front=rear来判断队列“空”还是“满”。注:先进入的为‘头’,后进入的为‘尾’。解决此问题的方法至少有三种:其一是另设一个布尔变量以匹别队列的空和满;其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否原创 2013-09-22 00:08:32 · 4225 阅读 · 0 评论 -
VC++ 6.0如何生成发布(VC++ 如何生成release版
VC++ 6.0如何生成发布1、确定Debug版无错,注意Trace等调试方法可能造成的错误2、Release版的exe文件链接的是标准的MFC DLL,比如MFC42.dll。这些DLL在安装Windows的时候,就会装到系统中。因此,这样的exe在没安装Visual C++ 6.0 的机器上也能运行。而Debug版不能,除非使用静态链接生成r转载 2013-10-09 09:13:46 · 1290 阅读 · 0 评论 -
unknown software exception(0x80000003)
最近写的转换程序,在debug版下跑了9个小时,最终崩溃,直接弹出对话框说: 应用程序发生异常,unknown software exception(0x80000003),位置为0x10212ad0. 又在IDE状态下debug版跑了16个小时,最终弹出用户断点对话框,点按钮后定位在 DBGHEAP.c 文件的第338行:/* break into转载 2013-10-09 08:41:16 · 10818 阅读 · 0 评论 -
输出所有二叉树的路径
#include #include //二叉树节点struct binary {int data;struct binary *left;struct binary *right;};//栈typedef struct stack{struct binary *tree;struct stack *next;int count;} lin原创 2013-09-24 00:43:37 · 1385 阅读 · 0 评论 -
一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算 //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。
//问题10:10.一棵排序二叉树(即二叉搜索树BST),令 f=(最大值+最小值)/2,设计一个算 //法,找出距离f值最近、大于f值的结点。复杂度如果是O(n2)则不得分。 treeNode *findNearMid(treeNode** root){ treeNode* ptr = *root; int min, max; whi原创 2013-09-23 20:41:18 · 2312 阅读 · 0 评论 -
二叉树的中序遍历非递归
// 中序遍历伪代码:非递归版本,用栈实现,版本1void InOrder1(TNode* root){Stack S;while ( root != NULL || !S.empty() ){while( root != NULL ) // 左子树入栈{S.push(root);root = root->left;}if ( !S.empty() )原创 2013-09-29 00:00:44 · 741 阅读 · 0 评论 -
宇龙酷派笔试题:求出数组的倒置,函数原型为char * reverse( char * str)
char *reverse(char *str){int i,j,n;char temp;i=0;while(str[i]!='\0'){i++;}n=i-1;for(j=0;j{temp=str[j];str[j]=str[n];str[n]=temp;n--;} return str;}题目中没有说明字符数组st原创 2013-10-16 09:44:44 · 1393 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2017-03-19 17:07:23 · 498 阅读 · 0 评论