![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
gilr
梅花香自苦寒来,
展开
-
文章标题
C++类的继承与派生原创 2017-03-08 17:49:12 · 302 阅读 · 0 评论 -
合并两个有序链表--实现1+2+3+....+n,时间复杂度为O(1)
1、合并两个有序链表,合并以后的链表依旧有效 C语言实现 链表结点定义如下:typedef int DataType; typedef struct Node { DataType _data; struct Node* _pNext; }Node,*PNode;实现代码:void InitList(PNode* pHead) //初始化单链表 { assert(pHea原创 2017-07-14 16:19:01 · 3505 阅读 · 0 评论 -
链表面试题3/链表带环问题--判断链表是否带环?
求单链表是否存在环,环长,带环链表长 给定一个单链表,只给出头指针h: 1、如何判断是否存在环? 2、如何知道环的长度? 3、如何找出环的连接点在哪里? 4、带环链表的长度是多少? 解法: 1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。 2、对于问题2,记录下问题1的碰原创 2017-07-17 10:58:46 · 360 阅读 · 0 评论 -
C++/设计一个类
–1.设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象。 1.设计一个类不能被继承解法一:将构造函数设为私有函数 在C++中,子类的构造函数会自动调用父类的构造函数,子类的析构函数也会调用父类的析构函数。要想一个类不能被继承,只要把它的构造函数和析构函数都设置为私有函数。那么当一个类试图从那里继承时,势必会因为调用构造函数和析构函数而导致编译错误。原创 2017-07-17 11:44:46 · 1532 阅读 · 0 评论 -
算法---面试题/--求N的阶乘N!中末尾0的个数
】–给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0 分析: 1)、如果N是一个很大的数,它的阶乘可能已超出计算机所能计算的最大范围,因此可能会导致溢出。我们换个角度想, N!=1×2×3×4×5×6×··· ×N ,我们可以对N!进行分解质因数,即 N!=(2^x)×(3^y)×(5^z) ·········· 可以看到原创 2017-07-22 14:35:27 · 1428 阅读 · 0 评论 -
预处理/内联函数和宏定义
面试题:内联函数和宏的差别是什么? 答: 内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单的替换。 1. 内联函数要做参数类型检查,这是内联函数跟宏相比的优势。 2. inline 是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说inline 增加空间消耗换来的是效率提高原创 2017-09-05 16:55:12 · 458 阅读 · 0 评论 -
友元/C++
面试题目1:写一个程序,设计一个点类Point,求两个点之间的距离。 解析:本题可以使用友元。 类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间原创 2017-11-29 15:38:37 · 265 阅读 · 0 评论 -
异常 /C++
一、C++异常分析: 构造函数中抛出异常是有一定必要的,试想如下情况: 构造函数中有两次new操作,第一次成功了,返回了有效的内存,而第二次失败,此时因为对象构造尚未完成,析构函数是不会调用的,也就是delete语句没有被执行,第一次new出的内存就悬在那儿(发生内存泄漏),所以异常处理程序可以将其暴露出来。 //..... Base() { in原创 2017-11-29 17:28:13 · 316 阅读 · 0 评论