![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 75
shangguan_1234
这个作者很懒,什么都没留下…
展开
-
对某门禁系统部分代码做线程控制
线程控制部分代码 c++11中的方法 m_Worker = std::make_shared<Linkface::SimpleWorker>([&](){ int len = m_Buffer.DataLen(); if(len <= 0) return; BYTE * buffer = new BYTE[len]; m_Buffer原创 2017-08-23 15:09:03 · 810 阅读 · 0 评论 -
【面试题】剑指offer11
实现函数Power(double base,int exponent),求base的exponent次方原创 2017-03-02 17:49:18 · 308 阅读 · 0 评论 -
【面试题】剑指offer10
输入一个数字,输出这个数的二进制中1的个数#include#includeusing namespace std;//int numberof1(int n)//{// int count=0;// unsigned int flag=1;// while (flag)// {// if(n&flag)// count++;// flag=flag<<1;//原创 2017-03-02 17:44:24 · 220 阅读 · 0 评论 -
【面试题】剑指offer 9
输入n,输出斐波那契数列的第n个数的值f(n)=0 n=0 1 n=1 f(n-1)+f(n-2) n>1代码#include#include using namespace std;long long Fibonacci(unsigned int n){ if(n<=0) return 0; if(n==1) return 1原创 2017-03-02 17:41:40 · 242 阅读 · 0 评论 -
【面试题】剑指offer 8
统计数组中各个数字出现的次数#include using namespace std;void SortAge(int ages[],int length){ if (ages==NULL||length<=0) return; const int oldestage=99; int timesages[oldestage+1]={0}; for (int i=0;i<le原创 2017-03-01 19:48:00 · 185 阅读 · 0 评论 -
【面试题】剑指offer 7
两个栈实现一个队列,并实现头删和尾删首先分析下当只需要尾插入时,只需要将数插入stack1,当需要头删时,需要将stack1中的数全部push到stack2中,然后在对stack2进行pop即可代码Myqueue.h#include#includeusing namespace std;templateclass MyQueue{public: MyQue原创 2017-03-01 18:14:36 · 286 阅读 · 0 评论 -
【面试题】剑指offer 6
输入前序遍历和中序遍历结果,重建二叉树BinTree.h//#include//#include//#include//#include //using namespace std;//struct BinTreeNode{// int _value;// BinTreeNode* _left;// BinTreeNode* _right;//};//BinTreeNo原创 2017-03-01 17:13:52 · 223 阅读 · 0 评论 -
【面试题】剑指offer 5
输入一个链表的头结点,从尾到头打印链表#include#includeusing namespace std;class ListNode{public: ListNode(const int & x) :_value(x) ,_next(NULL) {} int _value; ListNode* _next;};class List{public: Lis原创 2017-03-01 17:09:55 · 235 阅读 · 0 评论 -
【面试题】剑指offer 4
实现一个函数将字符串中的空格替换为20%#include#include#includevoid myblank(char * str,int length){ if(str==NULL||length<=0) return; int orlength=0; //int orlength=0; int numblank=0; //int numblank=0; int原创 2017-03-01 17:07:06 · 338 阅读 · 0 评论 -
【面试题】剑指offer 3
运行下面代码,结果?#include#include//#includeint main(){ char str1[]="hello world"; char str2[]="hello world"; char* str3="hello world"; char* str4="hello world"; if(str1==str2) { printf("str1 an原创 2017-03-01 17:04:17 · 563 阅读 · 0 评论 -
【面试题】剑指offer 2
题目:在一个二维数组中,每一行从左往右,每一列从上到下都是递增的,给任意值在数组只能查找该数#include#include#includeint getsize(int data[]){ return sizeof(data);}bool Find(int* matrix,int rows,int cols,int num){ bool found=false; if(m原创 2017-03-01 16:54:55 · 315 阅读 · 0 评论 -
【面试题】剑指offer 1
赋值运算符函数#include#include#include#includeclass Mystring{public: Mystring() {} Mystring(char* pData) { if (pData==NULL) { pData=new char[1]; pData[0]='\0'; } else { int leng原创 2017-03-01 16:52:01 · 500 阅读 · 3 评论 -
【数据结构】图Graph的邻接矩阵,邻接表及深度、广度遍历
图的分类有/无向图如果给图的每条边规定一个方向,那么得到的图称为有向图。在有向图中,与一个节点相关联的边有出边和入边之分。相反,边没有方向的图称为无向图。下面介绍图的两种存储结构1、邻接矩阵用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵邻接矩阵的原创 2016-11-27 16:40:34 · 3713 阅读 · 0 评论 -
【项目】内存池(对象池)
项目名称:内存池环境:VS2010内容:利用链表存数组的形式实现目的:系统中的new和delete调用比较消耗资源,设计一个相对消耗较小的对象池大致思想:一个链表指向空闲内存,分配就是取出一块来,改写链表,返回,释放就是放回到链表里面,并做好归并。注意做好标记和保护,避免二次释放,还可以花点力气在如何查找最适合大小的内存快的搜索上,减少内存碎片这里假设申请了12个字节大原创 2016-12-05 15:17:31 · 613 阅读 · 0 评论 -
【数据结构】二叉树中任意两节点的最近公共祖先节点
问题要求:任意给出二叉树中的两个节点,求他们的最近祖先分三种情况:1、该二叉树是搜索二叉树如果两个节点的值都大于根节点,则遍历右子树查找一个处于两节点之间的值为最近祖先,如果两个节点的值都小于根节点,则遍历左子树查找一个两节点之间的值为最近祖先插入代码Node* SearchNearAncestor(Node* root,Node* node1,Node*node2) {原创 2016-11-19 15:52:12 · 3278 阅读 · 0 评论 -
【STL】map如何进行排序并且求的TopK
上一篇博客已经简单的介绍了map的一些简单用法,下面简单分析下算法库中的排序sorttemplate void sort ( RandomAccessIterator first, RandomAccessIterator last );template void sort ( RandomAccessIterator first, RandomAccessIt原创 2016-11-15 18:05:22 · 690 阅读 · 0 评论 -
【STL】set map的基本用法
setpublic member functionset::begin iterator begin ();const_iterator begin () const;Return iterator to beginningReturns an iterator referring to the first element in the set co原创 2016-11-13 21:39:20 · 1183 阅读 · 0 评论 -
【数据结构】B树(B-Tree)
B树1970年,R.Bayer和E.mccreight提出了一种适合外查找的树,它是一种平衡的多叉树,称为B树。(有些地方写的是B-树,注意不要误读成"B减树")一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树或者满足一下性质:1. 根节点至少有两个孩子2. 每个非根节点有[ ,M]个孩子3. 每个非根节点有[ -1,M-1]个关键字,并且以升序排列4.原创 2016-11-12 14:59:31 · 1220 阅读 · 0 评论 -
【面试题】剑指offer 12
输入n,打印1到最大的n位数//#include//#include//using namespace std;////void Print1ToMaxOfNDigits(int n)////{//// int num=1;//// int i=0;//// while (i++<n)//// num*=10;//// for(i=1;i<num;i++)//// {//原创 2017-03-03 16:32:04 · 396 阅读 · 0 评论 -
【面试题】剑指offer 13
在O(1)时间删除链表节点listnode.h#include#includeusing namespace std;struct ListNode{ int _value; ListNode* pNext;};class List{public: List() :pHead(NULL) {} ~List() { delete pHead; pHead=原创 2017-03-03 16:35:41 · 270 阅读 · 0 评论 -
人脸识别部分内存调用优化
优化内容 :void realloc_if_need(){ size_t reserve_items=std::max(static_cast<int>(max_items/10),512); size_t allocate_items=0; bool need_realloc=false; if(getAllocatedSize()=原创 2017-08-23 15:03:21 · 803 阅读 · 0 评论 -
【算法】常见的七种排序及其算法优化
1、插入排序有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的原创 2016-11-23 21:23:37 · 4016 阅读 · 0 评论 -
【面试题】剑指offer 17
题目: 输入两个递增的链表,合并两个链表,并返回合并后的头结点#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* pNext;};class MyList{public: MyList() :pHead(NULL) {} ~M原创 2017-03-07 17:32:16 · 338 阅读 · 0 评论 -
【面试题】剑指offer 16
题目: 定义一个链表的头结点,反向输出链表#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* _pNext;};class List{public: List() :head(NULL) {} ~List() {原创 2017-03-07 16:43:31 · 321 阅读 · 0 评论 -
【面试题】剑指offer21
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,pop,push的时间复杂度都为O(1)#include<stack>#include<cassert>#include<iostream>using namespace std;template<typename T>class MyStack{public: MyStack()原创 2017-03-10 12:07:12 · 283 阅读 · 0 评论 -
【面试题】剑指offer 15
题目: 输入一个链表,输出该链表的倒数第k个节点。#include<iostream>#include<cstdlib>using namespace std;struct ListNode{ ListNode* pNext; int _value;};class List{public: List() :pHead(NULL)原创 2017-03-06 20:03:22 · 311 阅读 · 0 评论 -
【面试题】剑指offer20
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如: 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 代码#include<iostream>#include<cstdlib>using namespace std;void Pr原创 2017-03-09 20:51:32 · 225 阅读 · 0 评论 -
【面试题】剑指offer 19
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像 代码#include<iostream>#include<cstdlib>using namespace std;struct BinTreeNode{ int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x)原创 2017-03-09 19:12:52 · 251 阅读 · 0 评论 -
【面试题】剑指offer14
题目: 调整数组数据使奇数全部在偶数前面 解法一:void oddnumberfront1(int *arr,int length){ if (arr==NULL||length==0) { return; } int* first; int* last; first=arr; last=arr+length-1;原创 2017-03-06 16:16:24 · 400 阅读 · 0 评论 -
【面试题】剑指offer18
题目: 输入两颗二叉树A和B,判断B是不是A的子结构。#include<iostream>using namespace std;struct BinTreeNode { int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x) :_value(x)原创 2017-03-08 21:02:19 · 275 阅读 · 0 评论 -
【算法】几种排序代码
#include<iostream>#include<cstdlib>using namespace std;int ThreeMid(int * arr,int left,int right){ int mid=left+((right-left)>>1); while (left<right) { if(arr[left]<arr[righ原创 2017-03-17 17:53:52 · 383 阅读 · 0 评论 -
【数据结构】红黑树
红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是红色也可以是黑色。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。红黑树满足下面的性质1 . 每个节点,不是红色就是黑色的2 . 根节点是黑色的3 . 如果一个节点是红色的,则它的两个子节点是黑色的4 . 对每个节点,从该节点到其原创 2016-10-30 15:42:28 · 508 阅读 · 1 评论 -
【数据结构】利用堆建立哈夫曼树
建堆#pragma once #include #include using namespace std;// 小堆 templatestruct Less{ bool operator() (const T& l, const T& r) { return l < r; }};//大堆templatestruct Greater{原创 2016-10-30 00:05:22 · 733 阅读 · 0 评论 -
【面试题】五道面试题三
两个队列实现一个栈,并实现基本功能#include #includeusing namespace std;templateclass QueueStack{public: QueueStack() {} ~QueueStack() {} void Push(const T& x) { if (q1.size()>0) { q1.push(x); }原创 2016-09-27 17:36:45 · 226 阅读 · 0 评论 -
【面试题】五道面试题二
数组实现一个栈,并实现基本功能#include #include using namespace std;templateclass ArrayStack{public: ArrayStack(int size) :arr(NULL) ,len(size) ,top1(0) ,top2(len+1) { arr=new T[size+1]; } ~Arr原创 2016-09-27 17:35:26 · 253 阅读 · 0 评论 -
【面试题】五道面试题一
模拟实现栈的push/pop/min功能#include#include#include using namespace std;templateclass MyStack{public: MyStack() {} ~MyStack() {}public: void Push(const T& x) { s1.push(x); if (s2.empty原创 2016-09-27 17:33:20 · 261 阅读 · 0 评论 -
【数据结构】二叉树的查找及第K行子树个数计算
上篇博客基本已经将二叉树的基本算法进行了简单介绍,这篇文章主要介绍二叉树中节点的查找及第K行子树个数首先二叉树查找需要用到递归算法代码实现内部函数 Node* _Find(Node* root,const T& x) { if (root==NULL) return NULL; if(root->_date==x) return root;原创 2016-09-27 17:16:17 · 500 阅读 · 0 评论 -
【数据结构】二叉树的简单遍历及基本操作
1、构造2、拷贝构造3、析构4.深度5、叶子数6.前序遍历递归非递归7、中序遍历递归非递归8、中序遍历递归非递归9、k'ceng原创 2016-09-26 15:28:21 · 335 阅读 · 0 评论 -
【数据结构】判断出栈顺序的合法性
问题简单说明给定一个栈的入栈顺序,再给定一个出栈顺序,通过程序判断出栈顺序的合法性。思路如下:定义一个空栈sc先将str1中第一个元素入栈,然后通过循环使str1后移。1、如果当前栈为空且入栈序列不为空,则入栈序列str1后移,sp入栈。2、如果栈顶元素不等于出栈序列且入栈序列不为空,则入栈序列str1后移,sp入栈。3、如果栈顶元素等于出栈序列,s原创 2016-09-16 15:29:47 · 5065 阅读 · 0 评论 -
【数据结构】栈实现迷宫寻路问题
思路:解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,所以需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中要应用“栈”的思想假设“当前位置”指的是“在搜索过程中的某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是原创 2016-09-11 22:07:29 · 4330 阅读 · 0 评论