- 博客(14)
- 资源 (6)
- 收藏
- 关注
原创 【算法题】:跳台阶问题及斐波那契Fibonacci序列
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。分析:如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。 现在我们再来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时
2013-07-31 20:49:27 2571 1
原创 C语言函数参数入栈顺序探讨及栈的增长方向
四种方法判断栈的生长方向 Determine the Direction of Stack Growth由该文章知道计算机中栈的生长方向为由高到低,及栈底为高地址,栈顶为低地址,因此函数输入参数入栈顺序可以由栈地址大小判断,地址大的先入栈,地址小的后入栈#includevoid Var_Order(int x, int y, int z){ printf
2013-07-31 20:17:43 2047
原创 C语言实现双向链表删除节点、插入节点、双向输出等操作
#include#includetypedef struct DoubleLinkedList{ int data; struct DoubleLinkedList *pre; struct DoubleLinkedList *next;}DlinkedList_Node;//建立链表DlinkedList_Node* createDLink(){ D
2013-07-31 15:26:49 7234 1
原创 结构体字节对齐详解
为什么要对齐?效率问题,不同架构,不同处理方法。在实际的程序开发中,为了提高数据的读取效率,在内存资源足够的情况下,一般定义数据结构时候,因该考虑四字节对齐,其原因很简单,现在的计算机大部分是32位机,也就是四个字节。在cpu每次执行读取数据时候,则相关处理数据的寄存器/ 累加器均只能处理32位数据,则只能读取(一次)32位数据。有些情况下字节对齐的数据结构,要比非对齐的数据结构上
2013-07-31 12:30:22 4147 4
原创 C++ const关键字用法详解
1const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。事实上这个概念谁都有只是三种声明方式非常相似很容易记混。Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读。( * 读成 pointer to )char * const cp; c
2013-07-31 09:38:20 2280 3
原创 C语言typedef与复杂函数声明问题详解
下面是三个变量的声明,我想使用typedef分别给它们定义一个别名,请问该如何做?>1:int *(*a[5])(int, char*);>2:void (*b[10]) (void (*)());>3. doube(*)() (*pa)[9];答案与分析:对复杂变量建立一个类型别名的方法很简单,你只要在传统的变量声明表达式里用类型名替代变量名,然后把关键字typedef加
2013-07-30 20:09:42 2465 1
原创 [二叉树专题]:先序遍历二叉树的递归实现与非递归实现
1、先序遍历二叉树 递归实现思想:若二叉树为空,返回。否则 1)遍历根节点;2)先序遍历左子树;3)先序遍历右子树;代码: template void PreOrder(nodeType *root) { if(root==NULL) return ; visit(root->data); // vis
2013-07-30 19:20:39 1992
原创 [二叉树专题]:递归求解二叉树的叶子节点数目
递归求解二叉树的叶子节点数目template int BinaryTree::leavesCount(nodeType *p) { if(p == NULL) { return 0; } else if(p->llink == NULL && p->rlink ==NULL) { return 1
2013-07-30 19:01:52 1415
原创 [二叉树专题]:递归求解二叉树的全部节点数目
递归求解二叉树的全部节点数目template int BinaryTree::nodeCount(nodeType*p) { if(p == NULL) { return 0; } else { return 1 + nodeCount(p->llink) +nodeCount(p->rl
2013-07-30 18:58:55 1359
原创 [二叉树专题]:递归求解二叉树的高度
递归求解二叉树的高度等于左右子树的最大高度+1 templateint BinaryTree::height(nodeType *p){ if( p == NULL) { return 0; } else { return 1 + max( height(p->llink),height
2013-07-30 18:55:52 1930
原创 面试算法题:不用+、-、×、÷数字运算符做加法 (位运算实现加法操作)
题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。 首先我们可以分析人们是如何做十进制的加法的,比如是如何得出7+25=32这个结果的。实际上,我们可以分成三步的: 7 》》 011125=16+9 》》 1 1001 第一步只做各位相加不进位,此时相加的结果是22(个位数7和5相加不要进位是2,十位数0和1相加结
2013-07-29 17:19:10 4401 2
原创 通过数组初始化链表的两种方法:指向指针的引用node *&tail和指向指针的指针(二维指针)node **tail
void init_node(node *tail,char *init_array)这样声明函数是不正确的,函数的原意是通过数组初始化链表若链表结点传入的是指针,则并不能创建链表,除非是二维指针即指向指针的指针,或者是指向指针的引用因为传入的虽然是指针,但是对形参的操作并不能影响实参,函数内修改的是实参的副本。要想在函数内部修改输入参数,要么传入的是实参的引用,要么传入的是实参的地址
2013-07-29 16:31:22 2119
原创 数组字符串与指针字符串的区别 char s[]="***" 和char *s="***"的区别
char s[] = "wangshihui";char *s = "wangshihui"; 皆宣告了s字符串,在C-style string的函数皆可使用,但两者背后意义却不相同。char s[] = "wangshihui"; s指向栈内存的s是个char array,含11个byte(包含结尾\0),"wangshihui"对s来说是initializer,将字符一
2013-07-29 14:55:44 2236
如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5
2016-11-23
安卓二维码生成与扫描完美解决方案
2016-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人