深度优先搜索(栈),广度优先搜索(队列),最大子序列和(O(n)),计数排序,基数排序
count=(int *)malloc(sizeof(int)*(max+1));与count=(int *)malloc(sizeof(int)*max+1)区别
memset(count, 0, sizeof(int)*(max + 1));与memset(count, 0, sizeof(int)*max + 1);区别
树的基本遍历有4种方式,分别是:
先序遍历;中序遍历;后续遍历;层次遍历。事实上,知道任意两种方式,并不能唯一地确定
树的结构,但是,只要知道中序遍历和另外任意一种遍历方式,就一定可以唯一地确定一棵树
BST的中序遍历必定是严格递增的。
int a[5];
printf("%x\n", a);
printf("%x\n", a + 1);
printf("%x\n", &a);
printf("%x\n", &a + 1);
一个位域必须存储在同一个单元中,不能跨两个单元。如一个单元所剩空间不够存放另一位域时,
应从下一单元起存放该位域。也可以有意使某位域从下一单元开始
编译器在编译整个工程的时候,它
只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过
的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单
位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有
头文件中的东西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件
保存的正是这部分信息。以避免每次都要重新处理这些头文件。
1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍
是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如
果你没有包含这个文件,就告诉你Unexpected file end. 如果你不是在最开头包含的,
你自己试以下就知道了,绝对有很惊人的效果?..
fatal error C1010: unexpected end of file while looking for precompiled
header directive
Generating Code...
2)如果你把pch文件不小心丢了,编译的时候就会产生很多的不正常的行为。根据以上
的分析,你只要让编译器生成一个pch文件。也就是说把 stdafx.cpp(即指定/Yc的那个
cpp文件)从新编译一遍。当然你可以傻傻的 Rebuild All。简单一点就是选择那个cpp
文件,按一下Ctrl + F7就可以了。不然可是很浪费时间的哦。
某个数在一个集合中的秩是指该集合中小于或等于该数的元素的个数。
定义一棵二叉树的秩为从为从根节点开始到其叶节点中最长的一条树链上结点的个数。
//为什么memset可以用-1初始化,因为负数在计算机中用其正数的补码表示
//负数对应正数的补码=正数的反码+1=FF-正数+1=模-正数
//所以负数在计算机中的表示和模-正数表示一样
//所以-1在计算机中是256-1=255(11111111)一个字节
//所以pre(11111111 11111111 11111111 11111111)*Vertexnum
//所以pre(全是1),最后还是-1
//所以memset可以用0(二进制全是0),-1(二进制全是1)初始化int数组
memset(pre, -1, sizeof(int)*Vertexnum);
对于数组 int p[m][n];
如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为:
p + i*n + j;
所以函数形参必须声明维度,而不能写为二维指针,否则找不到地址
count=(int *)malloc(sizeof(int)*(max+1));与count=(int *)malloc(sizeof(int)*max+1)区别
memset(count, 0, sizeof(int)*(max + 1));与memset(count, 0, sizeof(int)*max + 1);区别
树的基本遍历有4种方式,分别是:
先序遍历;中序遍历;后续遍历;层次遍历。事实上,知道任意两种方式,并不能唯一地确定
树的结构,但是,只要知道中序遍历和另外任意一种遍历方式,就一定可以唯一地确定一棵树
BST的中序遍历必定是严格递增的。
int a[5];
printf("%x\n", a);
printf("%x\n", a + 1);
printf("%x\n", &a);
printf("%x\n", &a + 1);
一个位域必须存储在同一个单元中,不能跨两个单元。如一个单元所剩空间不够存放另一位域时,
应从下一单元起存放该位域。也可以有意使某位域从下一单元开始
编译器在编译整个工程的时候,它
只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过
的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单
位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有
头文件中的东西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件
保存的正是这部分信息。以避免每次都要重新处理这些头文件。
1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍
是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如
果你没有包含这个文件,就告诉你Unexpected file end. 如果你不是在最开头包含的,
你自己试以下就知道了,绝对有很惊人的效果?..
fatal error C1010: unexpected end of file while looking for precompiled
header directive
Generating Code...
2)如果你把pch文件不小心丢了,编译的时候就会产生很多的不正常的行为。根据以上
的分析,你只要让编译器生成一个pch文件。也就是说把 stdafx.cpp(即指定/Yc的那个
cpp文件)从新编译一遍。当然你可以傻傻的 Rebuild All。简单一点就是选择那个cpp
文件,按一下Ctrl + F7就可以了。不然可是很浪费时间的哦。
某个数在一个集合中的秩是指该集合中小于或等于该数的元素的个数。
定义一棵二叉树的秩为从为从根节点开始到其叶节点中最长的一条树链上结点的个数。
//为什么memset可以用-1初始化,因为负数在计算机中用其正数的补码表示
//负数对应正数的补码=正数的反码+1=FF-正数+1=模-正数
//所以负数在计算机中的表示和模-正数表示一样
//所以-1在计算机中是256-1=255(11111111)一个字节
//所以pre(11111111 11111111 11111111 11111111)*Vertexnum
//所以pre(全是1),最后还是-1
//所以memset可以用0(二进制全是0),-1(二进制全是1)初始化int数组
memset(pre, -1, sizeof(int)*Vertexnum);
对于数组 int p[m][n];
如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为:
p + i*n + j;
所以函数形参必须声明维度,而不能写为二维指针,否则找不到地址