2013年10月31日
摘要:
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12和10, 5, 7。二元树结点的数据结构定义为:struct BinaryTreeNode // a node in the binary tree{ int m_nValue; // value of node BinaryTreeNode *m_pLeft; // left child of node ...
阅读全文
posted @ 2013-10-31 20:18
猿人谷
阅读(402)
推荐(0)
摘要:
二 叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是 递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中, 前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现[cpp] view plaincopyvoidpre_order(BTree*root){if(root!=NULL)//必不可少的条件..
阅读全文
posted @ 2013-10-31 15:45
猿人谷
阅读(10458)
推荐(4)
2013年10月29日
摘要:
网新恒天2014校园招聘笔试编程题已知memcpy的函数为: void* memcpy(void *dest , const void* src , size_t count)其中dest是目的指针,src是源指针。不调用c++/c的memcpy库函数,请编写memcpy。功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。说明:1.source和destin所指的内存区域可以重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前被覆盖。而使用memmove可以用来处理重叠区域。函数返
阅读全文
posted @ 2013-10-29 14:44
猿人谷
阅读(8908)
推荐(2)
2013年10月25日
摘要:
一、顺序队列[cpp] view plaincopytypedefintQElemType;//c3-3.h队列的顺序存储结构(可用于循环队列和非循环队列)#defineMAXQSIZE5//最大队列长度(对于循环队列,最大队列长度要减1)structSqQueue{QElemType*base;//初始化的动态分配存储空间intfront;//头指针,若队列不空,指向队列头元素intrear;//尾指针,若队列不空,指向队列尾元素的下一个位置};//bo3-4.cpp顺序队列(非循环,存储结构由c3-3.h定义)的基本操作(9个)StatusInitQueue(SqQueue&Q){
阅读全文
posted @ 2013-10-25 21:13
猿人谷
阅读(2899)
推荐(1)
2013年10月24日
摘要:
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。思路:可能很多人写过判断一个字符串是不是对称函数,这个题目可以看成是该函数的加强版。首先想到的就是遍历,暂且先不考虑效率问题。判断一个字符串是不是对称的函数,可以用这个字函数逐一检查原字符串中所有的子字符串,然后输出长度最大的即可。怎样判断一个字符串是不是对称的字符串?-->可以用两个指针分别指向字符串的第一个字符和最后一个字符,判断是否相等,如果不相等直接返回false,如果为真则接着比较下 一对字符。如何遍历原字符串的所有字串?首先
阅读全文
posted @ 2013-10-24 20:02
猿人谷
阅读(1569)
推荐(0)
摘要:
回文串就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。比如输入字符串 "google”,由于该字符串里最长的对称子字符串是 "goog”,因此输出4。1.问题解决的基本方法分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称的。否则我们接着判断里面的两个字符是不是相等,以此类推。#includeusing namespac
阅读全文
posted @ 2013-10-24 20:00
猿人谷
阅读(35824)
推荐(4)
摘要:
最新文章可以参看:https://yuanrengu.com/2020/77eef79f.html 笔试题中经常会遇到这个问题:如果tcp建立连接时第三次握手失败,tcp会做何操作?该问题的本质是判断我们对tcp的状态转换是否能有比较深刻的理解。只要理解了下面的状态转换图,很容易回答上述问题。 在此
阅读全文
posted @ 2013-10-24 16:55
猿人谷
阅读(16491)
推荐(2)
摘要:
1.判断一个自然数是否是某个数的平方?(其实就是判断这个数一定是奇数相加的)由于(n+1)^2=n^2 + 2n + 1,= ...= 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)注意到这些项构成了等差数列(每项之间相差2)。所以我们可以比较 N-1, N - 1 - 3, N - 1 - 3 - 5 ... 和0的关系。如果大于0,则继续减;如果等于0,则成功退出;如果小于 0,则失败退出。复杂度为O(n^0.5)。不过方法3中利用加减法替换掉了方法1中的乘法,所以速度会更快些。例如:3^2 = 9 = 1 + 2*1+1 + 2*2+1 = 1 +
阅读全文
posted @ 2013-10-24 16:45
猿人谷
阅读(477)
推荐(0)
摘要:
题目:1*2*3*……*100 求结果末尾有多少个零分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾一个零表示一个进位,则相当于乘以10而10 是由2*5所得,在1~100当中,可以产生10的有:0 2 4 5 6 8 结尾的数字,显然2是足够的,因为4、6、8当中都含有因子2,所以都可看当是2,那么关键在于5的数量了那么该问题的实质是要求出1~100含有多少个5由特殊推广到一般的论证过程可得: 1、 每隔5个,会产生一个0,比如 5, 10 ,15,20.。。 2 、每隔 5×5 个会多产生出一个0,比如 25,50,75,100 3 、每隔 5×5×
阅读全文
posted @ 2013-10-24 16:15
猿人谷
阅读(10507)
推荐(3)
摘要:
题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解析:如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断 a[i]+a[j]?=sum,如果某一刻a[i]+a[j]>sum,则要想办法让sum的值减小,所以此刻i不动,j--,如果某一刻 a[i]+a[j] behind) { long l...
阅读全文
posted @ 2013-10-24 14:31
猿人谷
阅读(1465)
推荐(0)