
深入C/C++学习
文章平均质量分 59
总结相关C/C++的知识并深入了解
玄苦大师233
机会往往是长期准备和酝酿的而不能只靠一时的主动与激情所以认真写好技术博客吧
新博客 =》https://chenguolin.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【39】链表合并
题目: 输入两个原创 2014-06-17 22:18:21 · 1434 阅读 · 1 评论 -
【38】求链表倒数第k个结点
题目:输入一个链表,输出链表中的倒数第k原创 2014-06-16 18:31:08 · 1229 阅读 · 0 评论 -
【C++ - 26】STL之list
一. list介绍1. 相对于vector是连续的线性空间,list是一个不连续的存储空间。每次在list中插入或删除一个元素,就配置一个或释放一个元素空间,因此list对于空间的使用有绝对的精准,一点都不会浪费的。2. STL中list的结点结构,在STL中list是一个双向链表。list结点如下图所示template<typename T>stru...原创 2014-06-16 16:03:24 · 2862 阅读 · 0 评论 -
【37】调整数组顺序使奇数位于偶数前面
题目:原创 2014-06-16 13:14:00 · 1593 阅读 · 0 评论 -
【36】在O(1)的时间删除链表结点
1.原创 2014-06-15 11:43:49 · 1245 阅读 · 0 评论 -
【35】实现Power函数
题目:原创 2014-06-15 09:46:48 · 3147 阅读 · 0 评论 -
【34】旋转数组的最小数字
题目:把一个递增数组原创 2014-06-14 23:29:17 · 1196 阅读 · 0 评论 -
【C++ - 25】STL之vector
一. vector概述 1. vector的数据安排以及操作方式与数组非常的相似。数组是静态空间,一旦配置了就无法改变其大小。但是vector是动态的,随着元素的加入它的内部机制会自动扩充空间以容纳新元素,所以不用担心vector的空间问题。 2. vector的内部实现机制:定义一个vector的时候,如果不指定大小默认会开辟一块大小为n(n是默认值)的空间,如果...原创 2014-06-14 10:18:49 · 2373 阅读 · 1 评论 -
【33】利用归并排序求逆序数对
题目:利用归并排序求解一个数组中的逆序数对分析:1. 什么是逆序数对,例如给定数组{7, 5, 6, 4},对于每个数num,如果num之前有多少个数大于num则说明num这个数构成逆序数对有多少个 7有0个,5有1个,6有1个,4有三个,因此数组中总的逆序数对为5。2. 怎么利用归并排序来求逆序数对呢? (1)假设数组为{7, 5, 6, 4}...原创 2014-06-13 10:18:46 · 1749 阅读 · 0 评论 -
【32】计算两个链表的公共长度
题目:给定两个链表的头结点,求两个链表的公共长度。分析:1. 两个链表无非就两种关系(其它特殊关系都可以看成是这两种的特殊关系) (1)不相交: (2)相交: 2. 对于第一种情况,两个链表不相交则公共长度为0。第二种情况是从第一个公共结点之后所有点都是公共的,因此可以求出公共长度。3. 怎么求两个链表公共长度呢...原创 2014-06-13 08:54:00 · 1490 阅读 · 0 评论 -
【C++ - 24】STL六大组件
一. STL六大组件介绍1. 容器STL容器包含两种:序列式容器主要有vector、list、deque,以及关联式容器主要有set、map、multiset、multimap。容器主要是用来存放数据的,从实现的角度来看容器是一种class template(类模板)。2. 算法STL包含算法达上百种,主要有sort、search、copy、erase、find等,...原创 2014-06-13 07:59:47 · 5174 阅读 · 0 评论 -
【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
题目:给定一个二叉树要求打印出所有从根节点原创 2014-06-12 20:36:38 · 4016 阅读 · 1 评论 -
【30】非递归方法实现快速排序
1原创 2014-06-12 19:45:04 · 1783 阅读 · 0 评论 -
【29】求无序序列中最小k个数
题目:给定一个x原创 2014-06-12 18:58:34 · 1760 阅读 · 0 评论 -
【28】一个无序的序列查找第K大的数
题目:给定一个无序序列和一个数k,要原创 2014-06-12 17:21:24 · 6159 阅读 · 0 评论 -
【27】链表反转
题目:给定一个单链表的头结点要求反转该链表并要求不能改变更改链表的结构分析:1. 假设一个链表如下 headNode -> node1 -> node2 -> node3 -> node4 -> NULL2. 则反转完这个链表之后,希望得到如下链表 NULL 3. 此时链表的头结点变成了node4,我们可以枚举整个链表,对每一个结点我们保存下前面一个结点和下面一个结点,然后更改结点内部原创 2014-06-12 16:29:30 · 1350 阅读 · 0 评论 -
【26】希尔排序
1.原创 2014-06-08 12:59:33 · 1506 阅读 · 0 评论 -
【25】实现一个含有min函数的栈的通用模板
题目:设计一个栈类型,使得在该栈类型中有一个函数min可以得到栈的最小元素,要求这个栈的push、pop、min都是O(1)。原创 2014-06-08 08:27:53 · 1283 阅读 · 0 评论 -
【24】六大常用排序算法
一.原创 2014-06-07 18:41:01 · 3195 阅读 · 0 评论 -
【C++ - 23】虚函数之二
一. 设置虚函数需要考虑五个方面1. 只有类的成员函数才能声明为虚函数2. 类的静态成员函数不能为虚函数,因为调用静态成员函数不需要实例只需要用类名即可。而调用一个虚函数需要类的实例化对象,因为需要从实例化对象中的指向虚函数表的指针得到虚函数的地址,所以静态成员函数是不能为虚函数的3. 内联函数不能为虚函数。 因为内联函数是在编译的时候决定要不要内联的,内联...原创 2014-06-07 00:31:40 · 1085 阅读 · 0 评论 -
【C++ - 22】虚函数
一. 什么是虚函数1. 虚函数是面向对象编程中函数的一种特定形态,是C++中用于实现多态的一种有效机制2. 虚函数用virtual修饰函数名,虚函数的作用是在程序的运行阶段动态的选择合适的成员函数,在定义了虚函数之后,可以在基类的派生类中对虚函数进行重定义,在派生类中重定义的函数与基类虚函数具有相同的函数返回值、函数参数列表、函数名等。如果派生类中没有重定义基类的虚函数则它是直...原创 2014-06-06 23:01:08 · 1134 阅读 · 0 评论 -
【23】二叉树的相关操作
一. 二叉树的结点表示原创 2014-06-03 23:39:53 · 1061 阅读 · 0 评论 -
【22】用两个栈实现队列
题目:用两个栈实现一个队列,队列的声明如下原创 2014-06-03 22:33:39 · 1177 阅读 · 0 评论 -
【21】重建二叉树
题目:输入某个二叉树的前序遍历和中序遍历的jieg原创 2014-06-03 20:09:21 · 1328 阅读 · 0 评论 -
【20】从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个原创 2014-06-03 19:37:10 · 1083 阅读 · 0 评论 -
【19】实现strcpy和memcpy函数
一. strcpy函数1.原创 2014-05-29 13:11:33 · 1501 阅读 · 0 评论 -
【C++ - 21】局部变量和全局变量的区别
局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内 具体来说,全局变量和局部变量的区别如下:1. 作用...原创 2014-05-29 09:20:47 · 54745 阅读 · 5 评论 -
【18】替换空格
题目:实现一个函数,把字符串中的每个空格原创 2014-05-28 23:37:30 · 970 阅读 · 0 评论 -
【17】二维数组中的查找
题目:在一个二维数组中,每一行都原创 2014-05-28 22:56:49 · 1068 阅读 · 0 评论 -
【C++ - 20】C/C++中全局变量和静态变量的区别
1. 全局变量的作用域是整个项目,它只需要在一个源文件中定义就可以作用于所有的源文件,其它不包括全局变量定义的文件需要用extern关键字再次声明这个全局变量。2. 全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。3. 全局变量、静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。...原创 2014-05-28 22:21:36 · 5187 阅读 · 0 评论 -
【C++ - 19】C++中重载和覆盖的区别
一. 重载(overload)1. 重载指的是函数具有的不同的参数列表,而函数名相同的函数。重载要求参数列表必须不同,比如参数的类型不同、参数的个数不同、参数的顺序不同。2. 如果仅仅是函数的返回值不同是没办法重载的,因为重载要求参数列表必须不同。3. 程序是根据参数列表来确定具体要调用哪个函数的4. 看下面几个例子void Fun(int a);void Fun(d...原创 2014-05-28 11:29:17 · 10431 阅读 · 0 评论 -
【C++ - 18】C++函数参数传递三种方式
当进行函数调用的时候,要填入与函数形式参数个数相同的实际参数,在程序运行的过程中,实参会将参数值传递给形参,C++函数参数传递有以下三种方式。一. 值传递1. 利用值传递方式,实际上是把实参的内容复制到形参中,实参和形参是存放在两个不同的内存空间中。在函数体内对形参的一切修改对实参都没有影响2. 如果形参是类的对象,利用值传递的话每次都要调用类的构造函数构造对...原创 2014-05-28 10:04:52 · 14918 阅读 · 0 评论 -
【C++ - 17】指针常量、常量指针、指向常量的指针常量
指针常量、常量指针、指向常量的指针常量,这三个概念让很多人感到拗口,不好记住。但是只要你仔细研究,其实也就这么回事。一. 指针常量1. 所谓的指针常量指的是指针是一个常量,也就是常指针,和我们平时说的常量一样,指针指向的内存空间的地址是无法改变的2. 声明一个指针常量 int* const p = &a,定义一个指针p并且该指针是常量只能指向变量a。记住指针常量只能...原创 2014-05-28 09:08:09 · 1105 阅读 · 0 评论 -
【16】C++实现单例模式
1. 只能生成一个实例的类是实现了单例模式的原创 2014-05-27 22:45:45 · 1092 阅读 · 0 评论 -
【15】实现一个MyString类
题目:实现一个MyString类,类的声明如下原创 2014-05-27 19:36:58 · 3643 阅读 · 0 评论 -
【C++ - 16】判断操作系统是16位还是32位
法一:利用sizeof可以使用sizeof计算int的字节长度来判断是32位还是16位。32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节法二:利用最大值1. 机器位数不同则表示的数字的最大值是不同的。 32位机器下in...原创 2014-05-27 16:08:17 · 5453 阅读 · 0 评论 -
【C++ - 15】位运算求解一个整数的二进制中1的个数
法一:#include<iostream>#include<algorithm>using namespace std;int Count(int x){ int ans = 0; while(x != 0){ ++ans; x = x&(x-1); } return ans;}int main(){...原创 2014-05-27 15:31:24 · 2468 阅读 · 0 评论 -
【C++ - 14】位运算求解两个数的平均值
1. 给定两个数x和y,朴素算法求解两个数的平均值是(x+y)/2,但是这种方法有个问题就是当x和y的和溢出的时候得到的平均值是错误的,我们可以采用位运算来解决这个问题。 一般对于x和y不大的时候,利用(x+y) >> 1可以得到两个数的平均值 对于一个数a,a << n表示的是a*2^n;a >> n表示的是a/2^n2. ...原创 2014-05-27 15:17:48 · 2700 阅读 · 0 评论 -
【C++ - 13】C/C++中struct研究
一. C和C++中struct的区别C语言中struct是用户自定义的数据类型,它是没有权限设置的,它只能是一些变量的集合体,虽然可以封装数据但是不能够隐藏数据,而且成员也不可以是函数。C++中struct是抽象数据类型,它支持成员函数的定义,并且有访问权限,C++中struct默认访问权限是public。主要区别有以下三点1. C语言中struct不能有成员函数,而C++中...原创 2014-05-27 13:04:14 · 1272 阅读 · 0 评论 -
【C++ - 12】C++中宏定义和内联函数区别
一、宏定义和内联函数的区别1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率。 内联函数本质上是一个函数,内联函数一般用于函数体的代码比较简单的函数,不能包含复杂的控制语句,while、switch,并且内联函数本身不能直接调用自身。如果内联函数的函数体过大,编译器会自动的把这个内联函数变成普通函数。...原创 2014-05-27 00:45:27 · 7711 阅读 · 0 评论