10 2013 档案
数组前半部分和后半部分有序的全排序
摘要:例如:已知数组a前半部分a[0,mid - 1],后半部分a[mid,num-1],现前半部分和后半部分均已排好序。要求:实现a数组的从小到大排序。空间复杂度为O(1). 1 #include 2 using namespace std; 3 4 void PrintArry(int v[],int len) 5 { 6 for(int i = 0; i left ; -- i) {24 v[i] = v[i-1];25 }26 v[left] = temp;27 28 //move the current ... 阅读全文
posted @ 2013-10-31 21:03 猿人谷 阅读(1062) 评论(0) 推荐(0) 编辑
二元树中和为某一值的所有路径
摘要:题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数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 猿人谷 阅读(397) 评论(0) 推荐(0) 编辑
二叉树的遍历——递归和非递归
摘要:二 叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是 递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中, 前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现[cpp] view plaincopyvoidpre_order(BTree*root){if(root!=NULL)//必不可少的条件.. 阅读全文
posted @ 2013-10-31 15:45 猿人谷 阅读(10436) 评论(2) 推荐(4) 编辑
memcpy的函数
摘要:网新恒天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 猿人谷 阅读(8885) 评论(0) 推荐(2) 编辑
队列的实现
摘要:一、顺序队列[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 猿人谷 阅读(2888) 评论(0) 推荐(1) 编辑
对称字符串的最大长度
摘要:题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。思路:可能很多人写过判断一个字符串是不是对称函数,这个题目可以看成是该函数的加强版。首先想到的就是遍历,暂且先不考虑效率问题。判断一个字符串是不是对称的函数,可以用这个字函数逐一检查原字符串中所有的子字符串,然后输出长度最大的即可。怎样判断一个字符串是不是对称的字符串?-->可以用两个指针分别指向字符串的第一个字符和最后一个字符,判断是否相等,如果不相等直接返回false,如果为真则接着比较下 一对字符。如何遍历原字符串的所有字串?首先 阅读全文
posted @ 2013-10-24 20:02 猿人谷 阅读(1561) 评论(0) 推荐(0) 编辑
最长回文字符串
摘要:回文串就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。比如输入字符串 "google”,由于该字符串里最长的对称子字符串是 "goog”,因此输出4。1.问题解决的基本方法分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称的。否则我们接着判断里面的两个字符是不是相等,以此类推。#includeusing namespac 阅读全文
posted @ 2013-10-24 20:00 猿人谷 阅读(35773) 评论(0) 推荐(4) 编辑
TCP第三次握手失败怎么办
摘要:最新文章可以参看:https://yuanrengu.com/2020/77eef79f.html 笔试题中经常会遇到这个问题:如果tcp建立连接时第三次握手失败,tcp会做何操作?该问题的本质是判断我们对tcp的状态转换是否能有比较深刻的理解。只要理解了下面的状态转换图,很容易回答上述问题。 在此 阅读全文
posted @ 2013-10-24 16:55 猿人谷 阅读(16470) 评论(5) 推荐(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 猿人谷 阅读(472) 评论(0) 推荐(0) 编辑
100阶乘末尾有多少个零
摘要:题目: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 猿人谷 阅读(10394) 评论(0) 推荐(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 猿人谷 阅读(1459) 评论(0) 推荐(0) 编辑
总结---6
摘要:1.OSI参考模型有多少层?分别是哪几层?(不建议死记硬背,可以看看我在系列文章第一篇里的描述,效果比较好,不会因为紧张而答不出来) 七层模型,自下而上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。首先要学习OSI模型。如上图,OSI参考模型中各个分层的作用分别是——应用层:为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件以及远程登录(虚拟终端)等协议。表示层:将应用处理的信息转换为适合网络传输的格式,或讲来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。会话层:负责建立和断开通信连接(数据流通的逻辑通路),以及数... 阅读全文
posted @ 2013-10-23 09:56 猿人谷 阅读(405) 评论(0) 推荐(1) 编辑
总结---5
摘要:1.语义搜索所谓语义搜索,是指搜索引擎的工作不再拘泥于用户所输入的关键字,而是准确捕捉到用户所输入语句后面的真正意图,并以此来进行搜索,微软、谷歌和Facebook目前正在做着这样的事。语义搜索技术可以让计算机理解人们信息的概念,而非关键字。2.内存碎片内存碎片的产生:内存分配有静态分配和动态分配两种静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用 阅读全文
posted @ 2013-10-22 10:39 猿人谷 阅读(312) 评论(0) 推荐(0) 编辑
总结---4
摘要:全局变量与全局静态变量的区别:(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。静态全局变量的作用:(a)不必担心其它源文件使用相同变量名,彼此相互独立。(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。有语句char str[] = "abcde";请问表达式sizeof(str)的值是() 后面还有\0A、1 B、4 C、5 D、6有函数int func(int... 阅读全文
posted @ 2013-10-21 21:45 猿人谷 阅读(647) 评论(0) 推荐(0) 编辑
判断单链表是否存在环
摘要:周末参加完美世界校园招聘中就有一道判断单链表是否有环的编程题。写一个C/C++函数,来判断一个单链表是否具有环,如果存在环,则给出环的入口点。有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。现在需要解决的问题有以下两个:如何判断一个链表是不是这类链表?如果链表为存在环,如果找到环的入口点?判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则 阅读全文
posted @ 2013-10-21 14:11 猿人谷 阅读(691) 评论(0) 推荐(0) 编辑
设计模式分类
摘要:在《设计模式》这本书中列举并描述了23种设计模式,分为创建型模式、结构型模式和行为型模式。另外,近来这一清单又增加了一些类别,例如,并发型模式、线程池模式、Java EE企业技术的多层应用程序上的模式等。下面来看看每一种类型包含哪些设计模式。一 创建型模式GoF中共描述了5种创建型模式。1.工厂方法模式(Factory Method)定义一个接口用于创建对象,但是让子类决定初始化哪个类。工厂方法把一个类的初始化下放到子类。2.抽象工厂模式(Abstract Factory)为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体的工厂类。. 阅读全文
posted @ 2013-10-20 08:37 猿人谷 阅读(735) 评论(0) 推荐(0) 编辑
实用手册:130+ 提高开发效率的 vim 常用命令
摘要:来源:http://www.cnblogs.com/lhb25/p/130-essential-vim-commands.html Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。这里收录了130+程序员必备的 vim 命令,帮助你提高开发效率。基本命令:e filenameOpenfilenamefor edition:wSave file:qExit Vim:q!Quit without saving:xWrite file (if changes has . 阅读全文
posted @ 2013-10-19 09:07 猿人谷 阅读(421) 评论(0) 推荐(0) 编辑
Reverse Linked List II
摘要:Reverse a linked list from positionmton. Do it in-place and in one-pass.For example:Given1->2->3->4->5->NULL,m= 2 andn= 4,return1->4->3->2->5->NULL.Note:Givenm,nsatisfy the following condition:1 ≤m≤n≤ length of list.代码: 1 /** 2 * Definition for singly-linked list. 3 * s 阅读全文
posted @ 2013-10-18 20:55 猿人谷 阅读(449) 评论(0) 推荐(0) 编辑
Single Number and Single Number II
摘要:[1] Given an array of integers, every element appears twice except for one. Find that single one.[2] Given an array of integers, every element appears three times except for one. Find that single one. (better solution is needed)Note: Your algorithm should have a linear runtime complexity. Could you 阅读全文
posted @ 2013-10-18 20:36 猿人谷 阅读(2447) 评论(1) 推荐(0) 编辑
删除链表中的重复元素
摘要:昨晚在参加兰亭集势的笔试时,看到了这样一个题目。大致意思就是给出一个单链表,链表中有重复的元素,需要删除重复的元素。如:1→2→3→5→4→3→7,删除重复元素后变成1→2→3→5→4→7。思路其实还蛮简单:建立三个工作指针p,q,r,然后p遍历全表。p每到一个结点,q就从这个结点往后遍历,并与p的数值比较,相同的话就free掉那个结点。LinkList RemoveDupNode(LinkList L) //删除重复结点的算法{ LinkList p , q , r; p = L -> next; while(p) //p用于遍历链表 { q = p; while(q->next 阅读全文
posted @ 2013-10-18 09:28 猿人谷 阅读(1378) 评论(0) 推荐(0) 编辑
cocos2d-x:将iOS项目编译成Andriod项目
摘要:来源:http://www.cnblogs.com/angzn/p/3328049.html一、Android 环境搭建1、安装Andriod-NDK(Native Development Kit) 新建一个文件夹(eg:NDK),解压Android-NDK,将解压文件与压缩包放在一个目录下(eg:放在NDK中)。2、安装cocos2d-x 解压cocos2d-x源文件到任意目录(一般放在你Workspace一起)。 修改create-android-project.sh文件,修改NDK_ROOT_LOCAL和ANDROID_SDK_ROOT_LOCAL的值,如下: NDK_ROOT_... 阅读全文
posted @ 2013-10-17 10:06 猿人谷 阅读(1038) 评论(0) 推荐(0) 编辑
(转载)iPhone开发视频教程 Objective-C部分 (51课时)
摘要:感谢好人的无私贡献!来源:http://www.cnblogs.com/aimeng/p/3370012.html第一、二章OC基础语法iPhone开发教程 第一章 OC基础语法iPhone开发概述-必看(1.1)http://www.apkbus.com/android-102215-1-1.htmliPhone开发教程 第二章iPhone开发之开发工具安装及介绍(2.1) http://www.apkbus.com/android-102218-1-1.htmliPhone开发教程 第二章 iPhone开发之OC变量和基本数据类型(2.2) http://www.apkbus.com/.. 阅读全文
posted @ 2013-10-17 09:23 猿人谷 阅读(1301) 评论(0) 推荐(1) 编辑
顺序栈的实现和两栈共享空间
摘要:顺序栈的实现和两栈共享空间 以后慢慢启用个人博客:http://www.yuanrengu.com/ 一.顺序栈的实现 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先 阅读全文
posted @ 2013-10-14 14:41 猿人谷 阅读(8589) 评论(2) 推荐(5) 编辑
双向链表
摘要:双向链表 在线性链式存储结构的结点中只有一个指示直接后继的指针域,由此,从某个结点出发只能顺指针往后寻查其他结点。若要寻查结点的直接前趋,则需从表头指针出 发。换句话说,在单链表中,NextElem的执行时间是o(1),而PriorElem的执行时间为O(n)。为克服单链表这种单向性的缺点,可利用双 向链表。 双向链表是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。所以在双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。//线性表的双向链表存储结构typedef struct DulNode{ ElemType data; struct DulNod... 阅读全文
posted @ 2013-10-14 09:48 猿人谷 阅读(575) 评论(0) 推荐(0) 编辑
如何建立自己的私有云存储
摘要:来源:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/27/3101883.html现 在云计算已经算不上一个新鲜词了,各大IT公司的产品都会套上一个“云”字来忽悠用户。相信大家都用过网盘,现在更流行的词应该叫“云存储”,像用的比较 多国外的有 Dropbox、SkyDrive,国内也有百度云网盘、sina微盘、腾讯微云网盘等等,我们可以用这些网盘在不同的设备上来存储/获取数据,如PC、 智能手机、平板电脑等等,同时我们希望不同设备间的数据是同步的。 我们将要搭建自己的云系统平台,更精确的说是一个云存储系统,正如上面的产品所提供的功能。 阅读全文
posted @ 2013-10-13 21:04 猿人谷 阅读(1334) 评论(0) 推荐(0) 编辑
在Ubuntu 13.04下的安装eclipse
摘要:来源:http://www.cnblogs.com/lanxuezaipiao/p/3325628.html一、eclipse安装过程首先确保在安装eclipse之前已经安装好Java虚拟机1. eclipse官网下载压缩包下载地址:http://www.eclipse.org/downloads/?osType=linux&release=undefined2. 解压缩到 /opt/(/opt一般为大型商业软件或第三方软件包安装的地方,我习惯将第三方软件安装在此,当然你也可以安装在/usr/local下或其他地方)sudo tar xzvf eclipse-standard-kepl 阅读全文
posted @ 2013-10-13 20:25 猿人谷 阅读(10325) 评论(1) 推荐(3) 编辑
PHP常用库函数介绍+常见疑难问题解答
摘要:来源:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/19/3086858.html虽然PHP在整体功能上不如Java强大,但相比PHP而言 Java算是较重量级的,所以在小中型系统的开发上,使用PHP的趋势不可挡,就算是大型网站,比如淘宝也部分使用了PHP(Java后台逻辑+PHP前 台展示),所以赶紧开始学PHP啦。首先介绍下比较简单但必不可少且实用的知识,可以当手册查询,适合像我一样的新手看。一、PHP常用库函数介绍1. PHP字符串操作常用函数确定字符串长度intstrlen(stringstr)比较两个字符串 a. strcm 阅读全文
posted @ 2013-10-13 19:55 猿人谷 阅读(612) 评论(0) 推荐(2) 编辑
三种主流的Web服务实现方案(REST+SOAP+XML-RPC)简述及比较
摘要:目前知道的三种主流的Web服务实现方案为:REST:表象化状态转变 (软件架构风格)SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 下面分别作简单介绍:REST:表征状态转移(Representational State Transfer),采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源,REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。Http协议所抽象的get,post,put,delete就好比数据库中最基本的增删改查,而互联网上的各种资源 阅读全文
posted @ 2013-10-13 19:49 猿人谷 阅读(1083) 评论(0) 推荐(0) 编辑
删掉重复的数据
摘要:一)过滤重复的数据。即把原来重复的数据过滤,只保留一份。例如:inta[]={1,3,4,3,2,5,2};输出:13 4 25①实现方法一(采用STL):[cpp] view plaincopy#include#include#includeusingnamespacestd;voidDedup(FILE*infile,FILE*outfile){intiTemp;unsignedintnCount=0;typedefsetIntSet;IntSetiArray;while(NULL==feof(infile)){fscanf(infile,"%d",&iTemp 阅读全文
posted @ 2013-10-13 17:14 猿人谷 阅读(703) 评论(0) 推荐(0) 编辑
二叉树的非递归遍历(递归和非递归)
摘要:二 叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是 递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中, 前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现[cpp] view plaincopyvoidpre_order(BTree*root){if(root!=NULL)//必不可少的条件,递 阅读全文
posted @ 2013-10-13 16:59 猿人谷 阅读(1804) 评论(0) 推荐(0) 编辑
寻找数组中第二大或第二小的数值
摘要:昨天晚上参加了360校园招聘的笔试,其中最后一道笔试题就是找数组中的第二大的数。可以看出今年360笔试的试题还是不难的,想起昨晚提前把试题做完后,提前把试卷给交了,就和旁边的北大的一哥们聊天,聊最近的各种笔试、面试以及被鄙视。快到公交站时,还讨论着明天的腾讯、百度,以及晚上的去哪儿网的笔试。找工作还确实是个体力活啊!到处赶场。2013年360校园招聘题:写一个函数找出一个整数数组中,第二大的数。从一个给定的、无序的数组中,找出第二大或者第二小的数值。#include int FindSecondBiggest(int *v, int len){ if (v == NULL || len ma. 阅读全文
posted @ 2013-10-13 16:51 猿人谷 阅读(5839) 评论(11) 推荐(0) 编辑
根据前序和中序推出后序
摘要:最近面试总遇到这种根据给出的两类序遍历,然后求按另一种形式序的遍历。看来有必要好好总结下这个知识点,省的每次笔试时都得花不少时间推导。首先,我们看看前序、中序、后序遍历的特性:前序遍历:(根—>左—>右) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树中序遍历:(左—>根—>右) 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树后序遍历:(左—>右—>根) 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点三序中知道其中两个就可以推出第三个,但前提是我们必须知道中序(这里是针对二叉树的,不包括二叉搜索树).因为:先序和后序给我们提供的信息是 阅读全文
posted @ 2013-10-13 10:36 猿人谷 阅读(1008) 评论(5) 推荐(0) 编辑
Ubuntu下Firefox无法播放视频的解决方法
摘要:Ubuntu为Firefox安装Adobe Flash Player解决方法(解决火狐浏览器安装了三个flash插件中的第二个或者第三个插件而无法安装第一个adobe flash插件的方法):在新立得软件包管理器搜索swfdec-mozilla和mozilla-plugin-gnash这两个插件,看看是不是已经安装了,然后把单击右键这两个插件,选择标记以便彻底删除,然后单击应用。或者在终端使用如下命令:sudo apt-get remove --purge swfdec-mozillasudo apt-get remove --purge mozilla-plugin-gnash把 swfde 阅读全文
posted @ 2013-10-11 19:22 猿人谷 阅读(4432) 评论(1) 推荐(0) 编辑
C++命名规则
摘要:如果想要有效的管理一个稍微复杂一点的体系,针对其中事物的一套统一、带层次结构、清晰明了的命名准则就是必不可少而且非常好用的工具。活跃在生物学、化学、军队、监狱、黑社会、恐怖组织等各个领域内的大量有识先辈们都曾经无数次地以实际行动证明了以上公理的正确性。除了上帝(设它可以改变世间万物的秩序)以外,相信没人有实力对它不屑一顾。在软件开发这一高度抽象而且十分复杂的活动中,命名规则的重要性更显得尤为突出。一套定义良好并且完整的、在整个项目中统一使用的命名规范将大大提升源代码的可读性和软件的可维护性。在引入细节之前,先说明一下命名规范的整体原则:同一性在编写一个子模块或派生类的时候,要遵循其基类或整体模 阅读全文
posted @ 2013-10-11 10:44 猿人谷 阅读(5848) 评论(1) 推荐(4) 编辑
static_cast ,reinterpret_cast
摘要:用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。③把空指针转换成目标类型的空指针。④把任何类型的表达式转换成void类型。注意:stat. 阅读全文
posted @ 2013-10-10 17:05 猿人谷 阅读(15478) 评论(0) 推荐(2) 编辑
树的子结构
摘要:面试题目:输入两颗二叉树A,B,判断B是不是A的子结构;#include #include using namespace std;typedef struct BinaryTreeNode{ int value; BinaryTreeNode * lchild; BinaryTreeNode *rchild;}BinaryTreeNode;typedef BinaryTreeNode * BiTree;void CreateBiTreeByLevel(BiTree &t,int Array[],int i,int len){ if(Array[i]==0||i > len) r 阅读全文
posted @ 2013-10-10 16:28 猿人谷 阅读(359) 评论(0) 推荐(0) 编辑
总结---3
摘要:Email relay 和Email access分别用了什么协议?答:SMTP,POP31:多态是如何实现绑定的?多态的绑定可以分为运行是多态和编译时多态●编译时的多态性编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。●运行时的多态性运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态性通过虚成员实现。编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。2:析构函数是虚函数的优点是什么?这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析 阅读全文
posted @ 2013-10-10 16:15 猿人谷 阅读(492) 评论(0) 推荐(0) 编辑
出栈顺序
摘要:之前参加过华北计算机研究所和优酷土豆的笔试,都考到出栈顺序,之前数据结构学的不到位,遇到这类题时,还着实把我愣了一会,现在总结下,省得以后再遇到这类问题,也希望能给遇到同样问题的兄弟们一个参考。 废话不多说,直接上个例题。一个栈的入栈序列是a,b,c,d,e则栈的不可能的输出序列是:()A edcbd B decba C dceab D abcde 栈之根本——后进先出(Last In First Out , LIFO)初次接触到这个问题的人,或许会认为入栈abcde,所以出栈只能是edcba所以BCD都不对。 其实是这个问题描述有... 阅读全文
posted @ 2013-10-09 20:17 猿人谷 阅读(22666) 评论(1) 推荐(4) 编辑
四则运算表达式
摘要:四则运算表达式 一种不需要括号的后缀表达法,我们把它称为逆波兰(Reverse Polish Notation , RPN)表示。它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式,解决了四则运算中括号改变运算符优先级的问题。 我们先来看看,对于"9+(3-1)×3+10÷2",如果要用后缀表示法应该是什么样子:“9 3 1 - 3 * + 10 2 / +” ,这样的表达式称为后缀表达式,叫后缀的原因在于所有的符号都是在要运算数字的后面出现。一.后缀表达式计算结果 为了解释后缀表达式的好处,我们先来看看,计算机如何应用后缀表达式计算出最终的结果 阅读全文
posted @ 2013-10-09 16:59 猿人谷 阅读(3216) 评论(2) 推荐(4) 编辑
常见排序算法分析
摘要:一.常见排序算法的实现1.冒泡排序冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。按照定义很容易写出代码:void bubbleSort(int arr[],int n){ int i,j,t; for(i=0;i void bubbleSort(int arr[],int n){ int i,j,t; for(i=0... 阅读全文
posted @ 2013-10-08 13:46 猿人谷 阅读(975) 评论(0) 推荐(0) 编辑
总结---2
摘要:1.各种排序算法的时间复杂度和空间复杂度分析选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。排序法平均时间最差情形稳定度额外空间备注冒泡O(n2) O(n2)稳定O(1)n小时较好交换 O(n2) O(n2)不稳定O(1)n小时较好选择O(n2)O(n2)不稳定O(1)n小时较好插入O(n2)O(n2)稳定O(1)大部分已排序时较好基数O(logRB)O(logRB)稳定O(n)B是真数(0-9),R是基数(个十百)ShellO(nlogn)O(ns) 11,则其双亲是结点[i/2]。如果2i>n,则结点i无左孩子(结点i为 阅读全文
posted @ 2013-10-08 13:31 猿人谷 阅读(279) 评论(0) 推荐(0) 编辑
排序算法的稳定性和时间复杂度分析
摘要:这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个... 阅读全文
posted @ 2013-10-08 13:28 猿人谷 阅读(2213) 评论(0) 推荐(0) 编辑
直接插入排序
摘要:直接插入排序直接插入排序(straight insertion sort)的作法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 直接插入排序属于稳定的排序,最坏的时间复杂度为O(n^2),空间复杂度为O(1)。 直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接 插入排序是将待比较的数值与它的前一个数值进行比较 阅读全文
posted @ 2013-10-08 10:21 猿人谷 阅读(774) 评论(0) 推荐(0) 编辑
运算符重载
摘要:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。运算符函数定义的一般格式如下: operator (){ } 运算符重载时... 阅读全文
posted @ 2013-10-06 21:21 猿人谷 阅读(1040) 评论(0) 推荐(0) 编辑
vmware 下 ubuntu 不能全屏显示 的解决方法
摘要:vmware 下 ubuntu 不能全屏显示在 vmware 下 安装 ubuntu后,默认分辨率是 800 * 600,可以设置以全屏显示;设置步骤:vmware 下启动 虚拟机,即 启动 ubuntu 系统进入 ubuntu 系统界面,系统 -> 首选项 -> 显示,设置分辨率为与自己计算机相同的分辨率设置完成使用 ctrl+alt+enter 可以在 全屏/非全屏 直接切换 阅读全文
posted @ 2013-10-06 10:22 猿人谷 阅读(29451) 评论(0) 推荐(4) 编辑
(转载)如何学好iphone游戏开发
摘要:转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html自从发布《如何学习iphone游戏开发》到 现在,大概有半年时间了。其实在写《如何学习iphone游戏开发》的时候,我就写下豪言,说哪天学好了,再来写一篇《如何学好iphone游戏开发》。 但是现在,当我坐下来写这篇文章的时候,心里还是有点忐忑不安的,怕写不好,或者水平不够,写出来的东西达不到预期的效果。但是,管他呢,我手写我口,我 把自己这半年来的学习经历和心得体会,以后自己写博客的经历做了一些小结,希望能给后来人带来帮助。同时,我还会在文章的最后,为 阅读全文
posted @ 2013-10-04 10:17 猿人谷 阅读(645) 评论(2) 推荐(2) 编辑
IOS开发博客学习
摘要:M了个J :http://www.cnblogs.com/mjios/tag/objective-c/http://www.cnblogs.com/tianjian/p/3358602.html Cocos2d-x VS环境配置泰然论坛:http://www.ityran.com/archives/category/cocos2d-iphone1.http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 非常适用的入门教程2.http://www.cnblogs.com/BigPolarBear/tag/iOS/3 阅读全文
posted @ 2013-10-04 10:03 猿人谷 阅读(1751) 评论(3) 推荐(1) 编辑