摘要: 一、指向普通函数的指针 要符合两点要求: 1返回类型相同 2参数类型、个数、顺序相同 实例: int Max(int a,int b){ return a>b?a:b; } int (*pFun)(int a,int b); int _tmain(int argc, _TCHAR* argv[]){ pFun = Max; coutb?a:b; }}; int (A::... 阅读全文
posted @ 2014-12-02 20:35 阿木木在发呆 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1.通过数组和下标实现的表达式可以等价的通过指针和偏移量实现。 例如: int a[]= {1,4,66,8}; *p = a; p = &a[0];//和上面一句等价 *(p+1) 和a[1]和*(a+1)是等价的 a+1和&啊&a[1]也是等价的。 2.数组作为函数参数在传参时会自动退化为普通指针 int Srlen(char string[]); 在此函数中若调用系统的字符串长度函数s... 阅读全文
posted @ 2014-12-02 19:18 阿木木在发呆 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 一只青蛙一次可以跳上一个台阶或者两个。求该青蛙跳上一个N级台阶有多少种方法。 思路解析: 如果只跳一级台阶青蛙只有一种跳法,两级就有两种。我们把n级台阶的跳法看成n的函数 记为f(n)。当n大于二时,第一次跳时有两种不同的选择:一是一次只跳一级,此时跳法数 目等于后面n-1级台阶的跳法数目,即为f(n-1);另外一种就是选择第一次跳2级,此时跳法 数目就等于后面剩下的n-2级台阶的... 阅读全文
posted @ 2014-12-02 11:33 阿木木在发呆 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的旋转 输出旋转数组的最小元素。例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为一。 思路解析: 最简单的莫过于从头到尾遍历一遍找出最小元素,这种方法时间复杂度为O(n),但是没有使用旋转数组的 特性,肯定不符合面试官的要求。在排序数组中我们利用二分查找发实现O(lo... 阅读全文
posted @ 2014-12-01 13:02 阿木木在发呆 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 公司总共有几万名员工,对这些员工的年龄排序。要求只需用少量的辅助内存。 思路解析: 年龄总数在一个很小范围,例如0-100.这就可以用一个小数组存储了。逐个统计 年龄即可 参考代码: void SortAge(int age[],int length){ if (age == NULL || length == 0) { return; } ... 阅读全文
posted @ 2014-11-29 16:34 阿木木在发呆 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 1.accumulate:计算给定区间值的累加和2.函数原型(#include )template Type accumulate( InputIterator _First, InputIterator _Last, Type _Val );templat... 阅读全文
posted @ 2014-11-28 23:04 阿木木在发呆 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 对于这一类排序,我觉得先要弄懂其排序思想,可以通过看一些书籍或者文章(算法导论不错),在此基础上 要自己能够总结写出算法的伪代码,即使环境和条件改变,特别是一时不好下手写代码时很有必要先写下算法 伪代码,然后具体实现,时而看看写写,此类算法就能信手拈来。 快速排序是基于分治模式的。下面是算法导论中对 阅读全文
posted @ 2014-11-27 23:26 阿木木在发呆 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 用两个栈实现队列,队列的声明如下,请实现他的两个函数AppendTail和DeleteHead,分别完成在队列 尾部插入节点和在队列头部删除节点的功能。 templateclass CQuene{public: CQuene(){}; ~CQuene(){}; void AppendTail(const T &Node); T DeleteHead();pri... 阅读全文
posted @ 2014-11-25 21:41 阿木木在发呆 阅读(166) 评论(0) 推荐(0) 编辑
摘要: struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;}; //递归实现二叉树的遍历。递归算法比较简洁易懂这一就不做解释 void Preorder(BinaryTreeNode 阅读全文
posted @ 2014-11-25 10:30 阿木木在发呆 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 输入二叉树的前序遍历和后序遍历结果,请重建二叉树。假设输入的前序序列和后序序列都不含重复数字。 思路分析: 在二叉树的前序遍历中第一个数字总是树的根节点的值。但是在中序遍历中根节点的值位于序列中间,左子 树节点的值位于根节点值得左边,右子树节点的值位于根节点值的右边。因此我们需要扫描中序序列擦能找 到根节点的值。通过此方法可以分别找到了左右子树的前序序列和中序序列,然后可以用递归的... 阅读全文
posted @ 2014-11-25 10:26 阿木木在发呆 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 功能:创建链表节点,删除节点,顺序打印,不改变原结构的情况下分别用STL中的stack实现逆序打印和利用函数递归打印 代码如下: //链表问题struct ListNode { int m_nValue; ListNode* m_pNext;};void AddToTail(ListNode** pHead,int value);void RemoveNode(ListNode**pH... 阅读全文
posted @ 2014-11-24 20:28 阿木木在发呆 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 在一个二维数组中,每一行都按照从左到右递增排序,每一列从上到下递增排序。请完成一个函数, 输入这样一个二维数组和一个整数,判断数组中时候含有该整数。 思路分析: 首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查 找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,提出这个数字所在的行。也就是说 如果要查找的数字不在数组的右上角,则每... 阅读全文
posted @ 2014-11-24 16:41 阿木木在发呆 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 请实现一个函数,把字符串中的每个空格替换为“%20”。例如输入“Hello ZCM”,则输出“Hello%20ZCM”。 思路分析:在网络编程中,如果URL参数中有特殊字符,如空格、’#’等,可能导致服务端无法获得正确的参数值。 我们需要将这些特殊符号转换成服务器可以是别的字符。转换规则是在’%‘后面跟上ASII码的两位十六进制表示。 此题只需转换空格。为了提高效率,我们可以县便利... 阅读全文
posted @ 2014-11-24 16:29 阿木木在发呆 阅读(1206) 评论(0) 推荐(0) 编辑
摘要: 1、C/C++中字符串都是以’\0’结尾的。稍不留神就会造成字符串越界,例如: char str[10]; strcpy(str,”0123456789”); 一般在复制字符串时一定要为在字符串长度的基础上多申请一个字节内存给’\0‘ 2、看看一下代码会输出什么: char str1[] = "Hello ZCM";char str2[] = "Hello ZCM"; char *str3 =... 阅读全文
posted @ 2014-11-24 10:53 阿木木在发呆 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 先来体会下数组与指针的区别,看如下代码:int GetSize(int data[]){ return sizeof(data);}int _tmain(int argc, _TCHAR* argv[]){ int data[] = {1,2,3,4,5}; int size1 = sizeof(... 阅读全文
posted @ 2014-11-24 09:58 阿木木在发呆 阅读(122) 评论(0) 推荐(0) 编辑
摘要: class A{};sizeof(A)得到的不是0而是1,因为我们在申明类型实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例,具体占用多少内存由编译器决定,上面是我在VS2008上得出的结果。class A{char a;};这个sizeof出来的结果是1,不是4,在只有一个char型... 阅读全文
posted @ 2014-11-17 23:07 阿木木在发呆 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 今天看堆栈有关的算法时突然又想到了局部变量的压栈问题,在局部函数里面先定义的变量先压栈,按照所所需的大小分配内存,先压栈的变量地址会大些,这个不知是否跟编译器的实现有关,问题来了 int n = 1; int m = 2; int k = 3; int *p = &k; cout<<&n<<endl;cout<<&m<<endl;cout<<&k<<endl;cout<<sizeof(int)<... 阅读全文
posted @ 2014-11-09 11:31 阿木木在发呆 阅读(486) 评论(0) 推荐(0) 编辑
摘要: const的一些总结采用const符号常量写出来的代码更容易维护,有些函数只读不写:1 常变量: const 类型说明符 变量名2 常引用: const 类型说明符 &变量名3 常成员函数: 类名::fun(形参) const4 常量和指针用法一:常量const变量取代了C中宏常量的方式const ... 阅读全文
posted @ 2014-11-03 14:28 阿木木在发呆 阅读(438) 评论(0) 推荐(0) 编辑