![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++代码
文章平均质量分 74
wxx2222222
代码虐我千百遍,我待代码如初恋
展开
-
模拟实现STL中的Vector容器
Vector.h#include <iostream>using namespace std;template<class T>class Vector{public: typedef T ValueType; typedef ValueType* lterator; typedef const ValueType* Constlterator; typedef原创 2017-03-23 20:25:56 · 433 阅读 · 0 评论 -
直接选择排序
直接选择排序 思路 1.在比较的元素中,找到最小的。 2.如果最小的是在0下标处,则无动作,否则,将最小的元素与0下标的元素交换位置。 3.按照1,2的步骤继续找到第二小的放在下标为1的地方…..一直循环到处理完整个数组。以此为例:数组a为:2,5,4,7,1,8,3,0,9,6 ///////////////////////////////////////选择排序/原创 2017-08-01 21:09:35 · 177 阅读 · 0 评论 -
堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义 :二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆原创 2017-08-03 23:44:37 · 209 阅读 · 0 评论 -
将二叉搜索树转换成一个排序的双向链表
【题目具体】 将二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的结点,只能调整树中结点指针的指向,也就是left当prev,right当next。以如下的二叉树为例:要将此二叉树转化称为如下的双向链表:则步骤可以分以下:1.先找到最左边的结点0作为头结点。2.原创 2017-07-31 22:17:12 · 541 阅读 · 0 评论 -
整数的二进制表达中有多少个1
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的问题变成转载 2017-07-20 22:16:56 · 409 阅读 · 0 评论 -
由前序遍历和中序遍历重建二叉树
在刚开始见到这个题,只是觉得要用递归的方式来构造,但是实现很久实现不出来,后来多加了两个参数,直接定好了两个数组的遍历范围。【思路】以前序遍历: 1,2,3,4,5,6 【中左右】中序遍历:3,2,4,1,5,6 【左中右】1.由前序遍历可以得到根为1。2.在中序遍历中找到根1。3.建立结点1.4.找到后中序遍历1前面的都是根1的左子树的结点。5.中序遍历根原创 2017-07-29 22:18:29 · 775 阅读 · 0 评论 -
创建不能被继承的类?只在栈上?只在堆上?
【不被继承】首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函数和析构函数都是私有函数了,怎样才能得到该类的实例呢?可以通过定义静态来创建和释放类原创 2017-07-17 10:03:13 · 215 阅读 · 0 评论 -
AVL树
AVL树原创 2017-05-25 14:56:08 · 1090 阅读 · 0 评论 -
C++模板详谈
如何编写一个通用加法函数?使用函数重载,针对每个所需相同行为的不同类型重新实现它int Add(const int &_iLeft, const int &_iRight) { return (_iLeft + _iRight); } float Add(const float &_fLeft, const float &_fRight) { return (_fLeft + _fRi原创 2017-04-14 20:23:36 · 306 阅读 · 0 评论 -
C++多态详谈
多态1.静态多态静态多态(早绑定):编译器在编译期间完成的,编译器根据函数实参的类型(可能会出现隐式类型转换),可推断出要调用的那个函数,如果有对应的函数就调用该函数,否则出现编译错误。2.动态多态动态多态(晚绑定):在程序执行期间(非编译期间)判断所引用对象的实际类型,根据其实际类型调相应的方法。 使用virtual关键字修饰类的成员函数时,指明该函数为虚函数,派原创 2017-04-14 16:57:34 · 233 阅读 · 0 评论 -
继承详谈
继承详谈原创 2017-03-07 16:41:46 · 316 阅读 · 0 评论 -
用List模拟实现STL下的queue队列
queue.htemplate <class T>class Queue{ typedef T value_type; typedef int size_type;public: bool empty()const { return q.Empty(); } value_type& back() { ret原创 2017-03-23 20:58:53 · 470 阅读 · 0 评论 -
用Vector模拟STL下的stack容器
stack.ctemplate <class T>class stack{public: typedef T ValueType; typedef int SizeType; bool Empty()const { return v.Empty(); } void push(const T& x) { v.P原创 2017-03-23 20:55:57 · 230 阅读 · 0 评论 -
模拟实现STL中的List容器
List.h#include <iostream>#include <assert.h>using namespace std;//结点结构template<class T>struct ListNode{ ListNode(const T&data = T()) :_prev(0) ,_next(0) ,_data(data)原创 2017-03-23 20:48:38 · 345 阅读 · 0 评论 -
单例模式——c++实现线程安全的单例类
一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式:cla转载 2017-07-31 22:42:04 · 442 阅读 · 0 评论