- 博客(17)
- 资源 (8)
- 收藏
- 关注
原创 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回
int findDigtalMaxLength(char* a, int count, char*& ret) { if(a==NULL || count<0)//输入参数处理 return 0; int maxstart=0;//记录最长数字串的起始 int maxlength=0;//记录最长数字串的长度 int length=0; int start=0; for(int
2012-08-21 13:45:07 1169
原创 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
void getCombine(int* aux, int num, int indx, int val) { if(num<indx)//输入参数检测。 return; if(indx==val) { aux[indx]=1;//将最后一个数添加进去 for(int i=1;i<=indx;i++)//遍历所有之前的数,输出 { if(aux[i]==1)
2012-08-21 13:22:33 1964
原创 写正确函数需要注意的地方:快速返回斐波那契数的第n项
void f(int n, int* a) { static int A[4]={1,1,1,0}; if(n==1) return; f(n/2,a);//计算一半矩阵乘法的结果 int temp[4]; for(int i=0;i<4;i++) temp[i]=a[i]; for(int i=0;i<2;++i)//获得n/2*2的结果 { for(int j
2012-08-20 17:12:59 1817
原创 写正确函数需要注意的地方:链表的逆转,递归与非递归
Node* invert_list(Node* phead) { if(phead==NULL || phead->pNext==NULL)//参数验证 return phead; Node* p1=phead; Node* p2=phead->pNext; Node* p3=phead->pNext->pNext; while(p2!=NULL) { p2->pNext=p
2012-08-20 13:28:11 1102 1
原创 写正确函数需要注意的地方:子数组的最大和
int maxSum(int* a, int count) { if(a==NULL) { cerr<<"array==NULL"<<endl; throw ("array == NULL"); } if(count<0) { cerr<<"count<0"<<endl; throw ("count<0"); } int max=0x80000000; int f
2012-08-20 11:27:38 784
原创 写正确函数需要注意的地方:最大堆的创建与堆排序
void push_down(int* a, int indx,int count) { do { int leftindx=indx*2+1; int rightindx=leftindx+1; //在将indx所指的元素向下压的时候,将左右两个子节点中最大的,并且大于indx本身的向上提。 //如果没有可以上提的左右子节点,则结束。 if (leftindx=coun
2012-08-19 17:49:01 1015
原创 写正确函数需要注意的地方:两个有序链表的合并
Node* merge(Node* p1, Node* p2) { //检验输入参数。 if(p1==NULL) return p2; else if(p2==NULL) return p1; Node* head; Node* p; if (p1->value>p2->value) {//使得p1的第一个元素大于p2的。 p=p1; p1=p2; p2=p;
2012-08-19 16:45:04 808
原创 写正确函数需要注意的地方:int转char*, char* 转int。
void invert(char* a, int start, int end) { for(;start<end;++start,--end) { char temp=a[start]; a[start]=a[end]; a[end]=temp; } } int toint(char *str) { int result=0; for(int i=0;str[i]!=0;
2012-08-13 17:50:11 2011
原创 写正确函数需要注意的地方:翻转句子中单词的顺序。
void invert(char* a, int start, int end) { for(;start<end;++start,--end) { char temp=a[start]; a[start]=a[end]; a[end]=temp; } } void invertwords(char* a, int start, int end) { invert(a,st
2012-08-13 16:58:31 1359
原创 链表问题:如何判断一个链表有环,以及环的长度,起始位置。
1. 判断链表是否有环: 采用两个指针,一个每次循环前进一步,一个每次循环前进两步。如果存在环,则一定会相交。否则速度快的指针首先为NULL,或其next为NULL。 2. 环的长度: 从相交点开始,循环一次,直到再次到该相交点。循环次数即为环的长度。 3. 环的起始位置: 若相交点为P,环长度为M。计算head节点到交点的距离,为N。 则有, P点走M距离回到P点。 head走N
2012-08-13 15:33:58 1106
原创 写正确函数需要注意的地方:快速排序
//寡人修改两次之后的正确代码。 #include #include #include #include using namespace std; int genInt() { return rand()%100; } template int partition(vector& array, int startindx, int endindx) { int partvalue=arra
2012-08-12 15:09:00 745
原创 写正确函数需要注意的地方:二分查找
//正确的算法 template int my_binary_search(vector array, V v) { int left=0; int right=array.size()-1; int middle; while (left<=right)//为了使得最后的right能够被判断到。 { middle=(left+right)/2; if (array[middle
2012-08-11 22:07:40 738 1
原创 写正确函数需要注意的地方:strstr
//个人认为比较好的代码 char * strstr (register char *buf, register char *sub) { if (buf==NULL || sub==NULL) { return 0; } char *bp; char *sp; if (!*sub) return buf; while (*buf)
2012-08-11 20:54:33 959
原创 C++函数调用中的堆栈
当函数调用时, 首先将函数的参数压入栈中, 然后将函数的返回值的地址压入栈中, 接着调用函数。 在函数中,函数将的返回值拷贝到目的地址中。 然后再返回。 这样子就解决了函数的返回值可能被中断修改的问题。(C++编程思想P249) 然而,当存在对象作为函数参数和函数的返回值时,由于在创建临时对象的时候需要调用拷贝构造函数,因此,如果没有重载拷贝构造函数的话,系统将实行简单的位拷
2012-08-11 18:43:32 730
原创 C语言复习一
一、float 型变量的有效数字:7位有效数字。也就是说高于7位的将会被丢失。 a=123456.789e5 b=a+20 这是a与b相等。 二、各类数值型间的混合计算转换,横向为必转。 double → float ^| long ^| unsigned(注意了:如果int与unsigned计算,结果为unsigned的) ^| int 三、++,--运算结合方向为
2012-08-11 18:42:08 640
原创 C++语言Singleton
Singleton的构造: 首先定义一个private 的static自身的对象,然后重载拷贝构造函数,定义一个新的构造函数,并使得构造函数都为private。 这样的话,外部就不能调用构造函数了。 class Egg{ static Egg e; int i; Egg(int ii): i(ii){} Egg(const Egg&); public: static Egg*
2012-08-11 18:41:29 519
拼图游戏 android
2011-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人