- 博客(139)
- 收藏
- 关注
原创 练手小程序3.按给定的字母顺序打印字符串
题目:已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印,结果应为:dear, dog, eye, bed。考察知识点:字符串的大小比较代码如下:#include "stdafx.h"#include #include #inclu
2014-03-04 21:00:24 2119
原创 练手小程序2.链表翻转问题
问题1:给出一个链表,将其翻转,比如链表1→2→3→4→5→6,翻转后6→5→4→3→2→1;问题2:给出一个链表和一个数k,将链表进行翻转,比如链表1→2→3→4→5→6,k=2, 则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6考察的知识点:链表的灵活操作代码如下:#include "s
2014-03-04 20:40:15 1982
原创 练手小程序1.求两个时间的和
题目:求两个时间的和,输入两个时间(时间的格式为hh:mm:ss,保证输入都是正确的时间 ,所以自己不用检查输入的时间正确与否),计算这两个时间的和并输出。例如:输入 00:00:04 和 00:00:01 最后输出的时间是00:00:05考察的知识点:字符串的处理代码如下: // 求两个时间的和.cpp : 定义控制台应用程序的入口点。// 求两个时间的和,输入两个时间(时间
2014-03-04 20:29:37 1531
原创 遍历一个给定数组,创建一个有序链表
// 遍历数组建立有序链表.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;struct ListNode{ int m_nValue; ListNode *m_pNext;};//创建一个链表,输入从头到尾结点的值,输入-1表示结束void AddIte
2013-10-26 11:07:25 3148
原创 直接插入排序的实现(递归和非递归)
// 递归和非递归实现直接插入排序.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;//插入排序(非递归)void InsertSort(int *pArr, int nLength){ if (pArr == NULL || nLength <= 0) { r
2013-10-22 10:54:58 3733
原创 编程之美4:求数组中的最大值和最小值
方法1:暴力方法 遍历一遍数组,比较2*N次求出最大值和最小值方法2:改进方法 (破坏了原数组) 遍历一遍数组使得下标为偶数的元素较下标为奇数的元素大,再分别求出最大值和最小值 比较次数为3*N/2次方法3:改进方法 (不破坏原数组) 遍历一遍数组将相邻元素中较大值和nMax比较,将较小值和nMin比较
2013-10-08 15:57:43 18144 1
原创 求二叉树的深度和宽度
// 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include #include using namespace std;struct BTNode{ char m_value; BTNode *m_left; BTNode *m_right;};//先序创建二叉树void Crea
2013-10-07 22:52:04 25776 6
原创 二分查找的灵活应用
二分查找1.找任意一个出现key的下标 思路:mid位置小于key则low右移,大于key则high左移,等于则直接返回mid2.找第一个出现key的下标 思路:mid位置小于key则low右移,大于等于key则high左移,若low不越界且该位置的值等于key,则直接返回low,否则表示该值不存在3.找最大的小于key的下标 思路:mid位置小于key则low
2013-07-26 17:46:31 891
原创 面试题26:最小的k个数
方法一:对n个整数进行排序(快速排序或堆排序),取出前K个元素(最容易想到的最笨的方法,不可取)时间复杂度:O(n*logn) + O(k) = O(n*logn)采用快速排序的代码:#include "stdafx.h"#include using namespace std;//划分数组,找到枢轴元素下标,使得其左边的元素都比其小,右边的元素都比其大int Parti
2013-07-25 10:13:01 1153
原创 常见排序算法总结
参考了大牛的代码,自己理解整理。vs2008运行正确,如发现有误,请各位大牛指正!// Sort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;const int len = 100;class CSort{public:CSort(); ~CSo
2012-07-16 10:15:35 1123
转载 Vim简明教程【CoolShell】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类
2013-12-06 15:07:30 917
转载 带命令行参数的main函数详解[转载]
一、main()函数的形式 在最新的 C99 标准中,只有以下两种定义方式是正确的: (参阅ISO/IEC 9899:1999 (E) 5.1.2.2.1 Program startup) int main( void )--无参数形式 { ... return 0;
2013-11-25 17:32:26 8412 6
转载 UML常用图的几种关系的总结 .
在UML的类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency)1. 泛化(Generalization)【泛化关系】:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父
2013-11-03 10:59:34 1549
转载 C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p
2013-11-03 10:29:22 1014
转载 C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,
2013-11-02 17:14:01 1059
转载 C++与JAVA的区别
转自百度文库http://wenku.baidu.com/view/71b04eebe009581b6bd9ebfc.html 1.Java没有显式指针,而在C++中却可以用。 2.Java是主动多态的,你不用关心具有继承关系的多个类之间的同名成员函数会调用哪个,Java会主动地从祖父类、祖祖父类……追溯至最高一级父类,然后从上至下开始寻找并调用。C++不会主动使用多态,要使用多态,就
2013-10-30 13:59:04 6847
原创 STL之vector的几种遍历方式
遍历vector例如有vector v1;1void print( int i)2{3cout 4}方式1:1for( int i=0;
2013-10-30 13:45:49 14727 1
原创 strcpy和memcpy函数的实现及其区别
strcpy和memcpy的区别:(1)复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、 类等。(2)复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。 memcpy则是根据其第3个参数决定复制的长度。(3)用途不同。通常在复制字符串时用s
2013-10-27 16:33:40 1469
转载 C语言运算符优先级
优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;
2013-10-22 11:05:10 913
转载 设计模式几大原则 .
谈到设计模式,不能不说一下GRASP (职责分配原则),这个比模式更重要.我将再后边接着来分析.下面我来分析一下设计模式原则,以及在设计模式中的体现.主要参考:程杰 (这里用DH代替) 和Justin Tech 的博客.一:设计模式的核心原则是:"开-闭"原则( Open - Closed Principle 缩写:OCP ),一切的一切都是围绕着"开-闭"原则展开的开闭原则
2013-10-21 09:54:35 1022
原创 输出二叉树中所有从根结点到叶子结点的路径
// 输出二叉树中所有从根结点到叶子结点的路径.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include #include using namespace std;struct BTNode{ char m_value; BTNode *m_left; BTNode *m_right;};//先序创建二叉树
2013-10-07 20:38:48 18554 2
原创 二叉树的先序、中序、后序遍历的递归和非递归实现
#include "stdafx.h"#include using namespace std;const int MAXSIZE = 20; //定义栈空间大小为20struct BTNode{ char m_value; BTNode *m_left; BTNode *m_right;};BTNode *stackArr[MAXSIZE] =
2013-10-07 13:17:22 5159 1
转载 编程之美_单链表面试题_结合3.4_3.6 .
一、单链表结点的删除0、删除单链表p指向的那个元素,(时间和空间复杂度尽量小)二、单链表的存取1、找出单链表的倒数第K个元素,(仅允许遍历一遍链表)2、找出单链表的中间元素,(仅允许遍历一遍链表)三、单链表与环的问题3、判断单链表是否有环(6形状)?4、如何找到环的入口?5、如何知道环的长度?6、带环链表的长度是多少?四、单链表与相交、环的问
2013-10-04 14:53:29 1291
原创 常见笔试题二
析构函数和虚函数的用法和作用析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。有释放内存空间的做用!虚函数是C++多态的一种表现 例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数)。 使用虚函数,我们可以灵活的进行动态绑定,当
2013-10-03 21:05:04 1000
转载 常见笔试题三
入口在.main()/WinMain()Windows应用程序消息处理机制:A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。C. 应用程序调用DispatchMessage,将消息回传给操作系统。D. 系统利用WNDCLAS
2013-10-03 20:49:37 2301 1
原创 编程之美3:最大公约数问题
解法一:(辗转相除法)假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b。如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, y % x)(y > 0),如此便可把原问题转化为求两个更小数的最大
2013-10-01 15:31:35 1933
原创 编程之美2:精确表达浮点数
摘自编程之美 在计算机中,使用float或者double来存储小数是不能得到精确值的。如果你希望得到精确计算结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以转化为分数。比如:0.9=9/100.333(3)=1/3(括号中的数字表示是循环节)当然一个小数可以用好几种分数形式来表示。如:0.333(3)=1/3=3/9给定一个有限小数或者无限循环小数,你能否以
2013-10-01 15:05:45 1921
转载 编程之美1:快速找出故障机器
题目:假设一个机器只存储一个标号为ID的记录,假设每份数据保存2个备份,这样就有2个机器存储了相同的数据。其中ID是小于10亿的整数问题1、在某个时间,如果得到一个数据文件ID的列表。是否能够快速的找到这个表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID。问题2、如果有两台机器死机呢?(假设同一个数据的俩个备份不会同时丢失,即列表中缺少的是两个不等的ID)扩展题
2013-10-01 14:42:39 1471
转载 全局变量、局部变量、静态全局变量、静态局部变量的区别 .
1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含 全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。2>静态局部变量具有局部作用域,它
2013-09-17 15:57:48 1448
转载 struct与class的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class
2013-09-10 09:35:31 1267
原创 Lesson6: 对话框编程
1. Windows应用程序工作的基本流程是从用户那里得到数据,经过相应的处理之后,现把处理结果输出到屏幕,打印机或者绵输出设备。这就需要用到Windows应用程序的用户接口对话框。对话框就是一个窗口,它不仅可以接收消息,而且还可以被移动和关闭,甚至可以在它的客户区中进行绘图。相当于一个窗口,在它上面能够旋转各种标准控件和扩展控件。都是由CWnd类派生来 2. 对话框的类型:模态(Mode
2013-09-09 19:23:16 1424
原创 Lesson5: 菜单编程
1. MFC中的顶层菜单默认为弹出菜单(Pop-up),它是不能用来作命令响应的,当取消Pop-up选项后可接受命令响应。2. 消息的分类:标准消息,命令消息,通告消息。[标准消息]:除WM_COMMAND之外,所有以WM_开头的消息。从CWnd类派生的类都可以接收到这一消息[命令消息]:来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。
2013-09-08 13:22:52 1248
原创 Lesson4: 文本编程
1. 创建插入符void CreateSolidCaret( int nWidth, int nHeight );//创建插入符void CreateCaret( CBitmap* pBitmap );//创建位图插入符void ShowCaret( );//显示插入符void HideCaret( );//隐藏插入符static void PASCAL SetCaretPos
2013-09-07 21:55:13 992
原创 Lesson3: 简单绘图
1. 在单文档中,MFC视类窗口是覆盖在框架窗口上的。 此时如果编写针对MainFrame的mouseClick事件,将不会有反应,框架窗口不能感应到鼠标消息.2. MFC的消息映射机制(1)在每个能接收和处理消息的类中,定义一个消息和消息函数对照表,即消息映射表.(2)在消息映射表中,消息与对应的消息处理函数指针成对出现.某个类能处理的所有消息及其对应的消息处理函数的
2013-09-07 13:37:33 1000
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人