一个小程序的经验总结

#0 本程序递归生成树,树在分叉时可能二叉,也可能三叉…,但不超过16叉,所以果断用了数组。最终完成大概600行,网站空间,最初估计大半天完成,最终花了三天。最大感受:一旦数据定型,程序基本结构也定型了 | 自顶向下,化解复杂度控制很有效.#1 数据类型应用 typedef 实现灵活性

1typedefintnormalInt;2typedefcharElement;

#2 运用常量实现一定程度的可配置性

1constnormalIntElementNumber=32;2constnormalIntindexCount=32;3constnormalIntresultIdxCount=4096;4constnormalIntMAX_target=32;5constnormalIntMAX_Pool_Size=4096;6constnormalIntindexOver=-1;78constElementdataTableOver=-1;

#3 对于重新整理数组数据 eg. { 1 3 -2 -2 3 -2 -2 -2 4 5 -2 -1} 剔除负数->{ 1 3 3 4 5}用了容易编码的方式(申请同尺寸数组然后来回交换),有时间的话应该尝试下in place processing的方法。同样非递归方式画出树我也使用了同样的伎俩,以后换个方式做。即便这段代码也可以通过传递参数,根据参数动态申请存储器来加以改善.

normalIntidx[indexCount];//indexOvernormalIntlen=1;for(normalIntm=1;index[m]!=indexOver;m++)//m<=index[0]if(index[m]>-1){idx[len]=index[m];len++;}for(normalIntm=1;m<len;m++)index[m]=idx[m];index[len]=indexOver;

#4 牢记:C只有一种参数传递方式,下面代码演示了怎么通过函数调用申请资源、释放资源的过程

1intallocResourse(int**p){2*p=(int*)malloc(4*sizeof(int));34return0;5}67intdeallocResource(int**p){8free(*p);910return0;11}1213intprintArrayElements(){14int*p=NULL;1516allocResourse(&p);,p[m]);18deallocResource(&p);1920getchar();2122return0;23}

#5 使用指针应谨慎,写了下面这个函数我明白了间址指针的用途

1intdestroyTree(Tree**tree){2if(*tree==NULL)return0;34for(normalIntm=1;m<=(*tree)->pointerCounter;m++)5destroyTree(&((*tree)->p[m]));67free(*tree);8*tree=NULL;910return0;11}

#6 使用assert

美不美乡中水,亲不亲故乡人。

一个小程序的经验总结

相关文章:

你感兴趣的文章:

标签云: