C/C++
文章平均质量分 73
Bingo_12345
这个作者很懒,什么都没留下…
展开
-
从尾到头输出一个链表的几种方法
输入一个链表,从尾到头打印链表每个节点的值。利用栈: vector printListFromTailToHead(struct ListNode* head) { vector list; stack a; struct ListNode *p = head; while(p != NULL){原创 2015-09-03 17:24:04 · 429 阅读 · 0 评论 -
最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。基本方法:思路一:在K个数的数组中多次排序,每次替换掉最大的,直到原数组中的数比较完;代码: vector GetLeastNumbers_Solution(vector input, int k) { in原创 2015-09-08 10:34:06 · 337 阅读 · 0 评论 -
c++字符串操作函数
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用转载 2015-09-13 21:43:32 · 625 阅读 · 0 评论 -
哈夫曼树
在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结转载 2015-10-06 21:00:44 · 1529 阅读 · 0 评论 -
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?C语言中讲讲static变量和static函数有什么作用static关键字有两种意思,你看上下文来判断1,表示变量是静态存储变量 表示变量存放在静态存储区. 2,表示该变量是内部连接 (这种情况是指该变量不在任何{}之内,就象全局变量那转载 2015-10-06 19:14:48 · 392 阅读 · 0 评论 -
动态链接库和静态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生转载 2015-10-06 15:35:31 · 373 阅读 · 0 评论 -
扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12原创 2015-09-18 11:09:49 · 545 阅读 · 0 评论 -
进程间通信机制
进程间通信机制1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。 Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现转载 2015-10-06 20:39:01 · 390 阅读 · 0 评论 -
求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路一:利用&&的判断特性(前面false不在判断后面)递归来做; int Sum_Solution(int n) { int t = 0; bool b = (n!=0 && (t = S原创 2015-09-18 14:06:18 · 624 阅读 · 0 评论 -
正则表达式匹配
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路:递归方法判断:1、当前字符都是‘\0’,返回true;2、当前字符原创 2015-09-18 20:29:20 · 432 阅读 · 0 评论 -
序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路:用递归实现:序列化二叉树,按照中序遍历二叉树的顺序,先左节点,后右节点,当到‘#’时候,说明左节点或者右节点为NULL,同样反序列二叉树也一个道理,需要注意的是在序列和反序列二叉树的时候,注意字符串与整数的转换,一般字符串转换为整数,用迭代循环实现,整数转换为字符串可以用sprintf实现或者itoa实现;原创 2015-09-20 13:22:38 · 438 阅读 · 0 评论 -
数组中只出现一次的数字(异或方法)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:使用异或,但是与在成对出现的数字中查找一个单独的数字不同的是需要利用异或结果的最低位为1的flag将数组中的数字分为两类,一类是与flag按位与为0,另一类为不为0,这样再分别异或一次就能够找出这两个数。很是巧妙。其中有一个语法上容易忽略的坑:==的优先级比&高,所以&时需要加原创 2015-09-13 17:34:46 · 485 阅读 · 0 评论 -
识别有效的IP地址和掩码并进行分类统计
描述请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.2原创 2015-09-11 15:06:32 · 622 阅读 · 0 评论 -
二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路一:(较麻烦)1、当前结点有左子树,则当前结点连接到左子树递归产生的双项链表的最后,返回本节点;2、当前结点有右子树,则当前结点连接到右子树递归产生的双项链表的最前,返回本节点;3、叶子结点直接返回本节点;注意:由原创 2015-09-07 16:00:29 · 450 阅读 · 0 评论 -
void*相关小知识点
C/C++中的void和void*C/C++中的void和void*一、voidvoid关键字表示“空类型”的概念。但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西.void表示“不存在”的意思,可以从void的两个应用中加以体现:1、void作为函数的返回值类型时,转载 2015-09-03 21:05:39 · 381 阅读 · 0 评论 -
C++内存管理及指针相关
导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配转载 2015-09-03 17:29:16 · 540 阅读 · 0 评论 -
C++中字符串与数字相互转换
1. 字符串转数字如将“32”转为32,将“3.1415”转为3.1415,将“567283”转为567283。使用://Convert string to integer, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/int atoi ( const char * str );//Conve转载 2015-09-08 21:43:09 · 636 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码: struct TreeNode* reConstructBinaryTree(vector pre,vector in原创 2015-09-04 14:48:13 · 423 阅读 · 0 评论 -
C++ 华为 合唱队
描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1Ti+1>......>TK。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出原创 2015-09-09 22:13:26 · 1484 阅读 · 1 评论 -
整数中1出现的次数(从1到n整数中1出现的次数)
题目描述整数中1出现的次数(从1到n整数中1出现的次数)思路一:将每个数转换成字符串,逐个数逐位比较。(较费时费劲)代码: int NumberOf1Between1AndN_Solution(int n) { int count = 0; char a[10]; Stringstream s原创 2015-09-08 17:09:33 · 269 阅读 · 0 评论 -
32位和64位系统内置数据变量的大小区别
32位和64位系统区别及int字节数一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“转载 2015-09-05 10:31:57 · 3380 阅读 · 0 评论 -
华为OJ题目 配置文件恢复
描述有6条配置命令,它们执行的结果分别是:命 令执 行resetreset whatreset boardboard faultboard addwhere to addboard deletno board at allreboot backplaneimpossiblebackplane abortinstall firsthe heunkown command 注意:he h原创 2015-09-10 15:03:27 · 1774 阅读 · 0 评论 -
C++位操作
关于逻辑移位、算术移位可参见迅雷深大笔试题部分。的一道题。以前看到C++标准上说,移位运算符(>)出界时的行为并不确定:The behavior is undefined if the right operand is negative, orgreater than or equal to the length in bits of the promoted left opera转载 2015-09-05 10:43:27 · 580 阅读 · 0 评论 -
火车进站
描述给定一个正整数N代表火车数量,0知识点栈运行时间限制0M内存限制0输入有多组测试用例,每一组第一行输入一个正整数N(0输出输出以字典序排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sample。样例输入原创 2015-09-10 19:53:14 · 1013 阅读 · 0 评论 -
数组指针与指针数组
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2015-09-22 11:00:00 · 386 阅读 · 0 评论