自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 makefile 教程

makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个

2018-05-09 14:54:24 227

原创 C++实现并查集

将N个不同的元素分成一组不相交的集合。开始时,每个元素就是一个集合,然后按规律将两个集合进行合并。假如已知有n个人和m对好友关系(存于数组r),如果两个人是直接的或间接的好友关系(好友的好友的好友....),则认为他们属于同一好友圈,请求出这n个人中有几个好友圈。例如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2和3是好友,

2016-09-28 23:46:38 2904

原创 C++实现平衡搜索树

AVL树左子树和右子树的高度之差不超过1左子树和右子树都是AVL树平衡因子=右子树个数-左子树#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;templatestruct AVLTreeNode{ K _key; V _value; AVLT

2016-09-21 15:25:28 1847

原创 C++实现搜索二叉树

二叉搜索树的性质:每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于根节点的关键码(key)。右子树上所有节点的关键码(key)都大于根节点的关键码(key)。左右子树都是二叉搜索树。#define _CRT_SECURE_NO_WARNINGS 1#include#includeusin

2016-09-21 00:46:55 2508 2

原创 比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

一,直接插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。步骤:从第一个

2016-09-18 20:06:51 1252

原创 非比较排序——计数排序和基数排序

计数排序基数排序代码实现:#pragma once#include#includeusing namespace std;int GetMaxDigit(int *a, size_t n)//最大有多少位{int digit = 1;//位数int max = 10;for (int i = 0; i {if (a[i]

2016-09-17 23:41:20 286

原创 堆的实现

堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点调整后:代码实现:#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includeusing namespac

2016-09-16 23:58:35 202

原创 二叉树的线索化

二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。enum PointerTag {THREAD, LINK};temp

2016-09-15 23:48:42 354

原创 C++一个数组实现两个栈

方案一:将数组的下标为0的位置当做第一个栈的栈底,下标为1的位置当做第二个栈的栈底,将数组的偶数位置看做第一个栈的存储空间,奇数位置看做第二个栈的存储空间。方案二:从中间分别向两边压栈将数组的中间位置看做两个栈的栈底,压栈时栈顶指针分别向两边移动,当任何一边到达数组的起始位置或是数组尾部,则开始扩容。方案三:从两边向中间压栈将数组的起始位置看

2016-09-10 22:14:36 1170

原创 元素出栈、入栈顺序的合法性

如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)先把1,2,3,4压入栈,再把4弹出,再把5压入,最后依次弹出5,3,2,1#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includeusing namespace std;templatebool CheckSta

2016-09-10 21:50:49 363

原创 C++面试题:两个队列实现一个栈

队列的特点是“先进先出”,而栈的特点是“先入后出”。方案一:我们用一个队列作为主要维护栈的队列,该队列用来插入元素和弹出元素。插入元素时,将元素直接插入到第一个队列的尾部。弹出元素时:(1)将第一个队列的除队尾元素以外的所有元素依次弹出并且插入到第二个队列中(2)将第一个队列中剩下的那个元素弹出(3)将第二个队列中的所有元素依次倒回到

2016-09-10 21:25:08 374

原创 C++实现队列

队列的定义队列值允许在表的队尾进行插入,在表对头进行删除。队列具有先进先出的特性。(FIFO,first In First Out)#define _CRT_SECURE_NO_WARNINGS 1//队列先进先出#include#include#includeusing namespace std;templat

2016-09-10 20:56:34 288

原创 两个栈实现队列

实现一思路    s1是入栈的,s2是出栈的。入队列,直接压到s1是就行了出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中实现二思路    s1是入栈的,s2是出栈的。保证所有元素都在一个栈里面入队列时:如果s1为空,把s2中所有的元素倒出压到s1中;否则直接压入s1出队列时:如果s2不为空,把s2

2016-09-10 13:21:01 189

原创 C++实现栈的基本操作

#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include#include#include#includeusing namespace std;templateclass Stack{public:Stack();//构造~Stack();//析构Stack(const Stack

2016-09-08 14:11:54 1270

原创 C++类型萃取

C++模板中的类型参数T是抽象的,我们并不能在模板内部直接获得它的具体特征。类型萃取(抽取)技术就是要抽取类型的一些具体特征(trait),比如它是哪种具体类型,它是引用类型,内建类型,还是类类型等。可见,类型萃取技术其实就是trait模板技术的具体体现。获取类型的具体特征在Java、C#等语言中也称为反射(reflection),C++中通过模板技术也可以实现一定的反射行为。   类型信息是

2016-09-06 14:31:23 673

原创 类型转换问题代码及解析

#define _CRT_SECURE_NO_WARNINGS 1////类型转换//#include//#include//using namespace std;////void Test()//{// int i = 1;// //隐式类型转换// double d = i;// printf("%d,%.2f\n", i, d);//

2016-09-06 00:17:33 291

原创 I/O流 文件读写

流:“流”即是流动的意思,是物质从一处向另一处流动的过程。C++流是指信息从外部输入设备(键盘等) 向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。这种输入输出的过程被形象的成为“流”为了实现这种流动,C++定义了I/O标准库,这些每个类都成为流/流类,完成一些功能。#define _CRT_SECURE_NO_WARNINGS 1#include

2016-09-05 00:11:02 329

原创 异常问题解析及google异常规范

#define _CRT_SECURE_NO_WARNINGS 1//异常处理,当一个函数发现自己无法处理错误时抛出异常,让函数调用者直接或者间接的处理这个问题//异常的抛出和捕获//1,异常时通过抛出对象而引发的,该对象的类型决定了应该激活哪个处理代码//2,被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个//3,抛出对象后会释放局部储存对象,所

2016-09-04 08:47:31 845

原创 模拟实现C++/boost库智能指针auto_ptr scoped_ptr和share_ptr

#pragma once #includeusing namespace std;//1,AutoPtr 管理权转让(不建议使用)//2,scopedptr 防拷贝 声明为protected private 只声明不实现(建议使用)//3,shareptr 引用计数 增减计数,最后一个时释放对象//4,xxxarrar  管理数组。只需要重载[]//5,weakpt

2016-09-03 13:51:03 393

原创 http问题

在安装mysql5.4.12时运行make test报提示错误信息:error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory。解决办法:locate libmysqlclient.so.16如我

2016-09-03 00:52:12 198

原创 对象模型&模板

#define _CRT_SECURE_NO_WARNINGS 1////虚函数表是通过一块连续内存来存储虚函数的地址//#include//#include////using namespace std;////class Base//{//public:// virtual void func1()// {// cout // }

2016-09-02 16:30:45 243

原创 继承和多态问题全解析

#define _CRT_SECURE_NO_WARNINGS 1//继承://private和protected的区别?//在类外如果想使用类中的成员,只能直接使用public类型的,protected和private都是不能访问的。//对于类外使用而言,这两个是完全相同的.//但是在基类的派生类中, 可以直接访问继承而来的protected成员, 但是不能访问pri

2016-09-01 23:32:46 226

原创 C++复习2

#define _CRT_SECURE_NO_WARNINGS 1////const修饰的成员变量////const 对象不能调用非const成员函数////非const对象可以调用const成员函数////const成员函数不能调用非const成员函数////非const成员函数可以调用const成员函数//#include//#include//

2016-09-01 00:04:28 183

原创 c++复习1练习题极其代码

#define _CRT_SECURE_NO_WARNINGS 1//#include//#include////using namespace std;//int Add1(int a = 0, int b = 0)//{// return a + b;//}////int Add2(int a, int b = 0)//{// retur

2016-08-30 23:20:37 214

原创 判断两个链表是否相交,若相交,求交点。

第一种情况:两个链表均不含有环思路:1、直接法采用暴力的方法,遍历两个链表,判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大。2、hash计数法以链表节点地址为值,遍历第一个链表,使用Hash保存所有节点地址值,结束条件为到最后一个节点(无环)或Hash中该地址值已经存在(有环)。再遍历第二个

2016-08-27 22:06:41 432

原创 链表实现约瑟夫环

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。代码实现:#include using namespace std;struct Node{in

2016-08-26 00:51:24 347

原创 顺序表和链表的相关热点面试题

一,比较顺序表和链表的优缺点,说说他们分别在什么场景下使用?       1,顺序表支持随机访问,单链表不支持

2016-08-21 18:30:10 302

原创 单链表的增删查改(C++实现)

Slist.h:#pragma once #includeusing namespace std;typedef int DataType;struct Node{Node(const DataType& d):_date(d), _next(NULL){}DataType _date;struct Node* _ne

2016-08-21 18:02:34 3179

原创 顺序表的建立及增删查改

#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#include//顺序表的静态存储#define MAX_SIZE 100typedef  struct SeqList{int arr[MAX_SIZE];size_t size;}SeqList, *

2016-08-20 01:31:25 389

原创 经典面试题:求数组的最大子序列和;实现函数 :判断一个自负喜欢是否是另一个字符串旋转所得;杨氏矩阵中查找一个数。

////求数组(元素可为正数,负数,0)的最大子序列和。////#include//#include////int get_max_sum(int *arr, int len)//{//int max = arr[0];//int sum = 0;//while (len--)//{//sum += *arr++;//if (

2016-08-15 19:03:21 383

原创 realloc,malloc,calloc的区别 new delete和malloc free的区别

realloc,malloc,calloc的区别:三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内 它

2016-08-14 23:09:45 431

原创 位段和联合

位段:有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不

2016-08-12 23:15:43 429

原创 单链表的实现

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。代码实现:#include#includetypedef struct Node{int data;struct Node *next;}Node;typedef struct Node *list;void In_List(list *head){*head

2016-08-11 12:44:38 234

原创 strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现

//编写一个函数计算一个字符串的长度#include#include//int my_strlen(char *str)//{// int len = 0;// while (*str)// {// len++;// str++;// }// return len;//}int my_strlen(char *str){char

2016-08-10 18:05:59 440

原创 shell脚本学习知识总结

shell脚本:1,shell脚本符号在第一行是:#!/bin/bash 表示要运行shell脚本以后#就是注释把这个脚本文件加上可执行权限:chmod u+x 加上可执行文件解释器路径shebangshell脚本是批量处理语言环境中的shell执行:sh test.sh          /bin/bash test.shPHP:父

2016-08-09 18:50:48 827

原创 C语言总复习第二阶段部分练习题

#define _CRT_SECURE_NO_WARNINGS 1// 求斐波那契数列//#include//#include//#include////void Fibonacci(int n)//{// assert(n >= 0);// int f1 = 1;// int f2 = 1;// int val = 0;// if (n =

2016-08-07 22:01:32 394 4

原创 const 关键字全解析

const关键字一直是面试中喜欢问的问题,但同时也是让很多人头疼的关键字:首先我们看几个声明的变量:const int a;int const a;const int *a;int * const a;int const * a const;不管怎么修饰,这些变量都是int型的变量前两个的作用是一样,a是一个常整型数。第三个意

2016-08-06 19:42:45 286

原创 在终端输入多行信息,找出包含“ould”的行,并打印改行。

如:输入:Au,love could youand I with fate conspireTo grasp this sorryscheme of things entire,Would not we shatterit to bitd - and then.输出:Au,love could youand I with fate conspire含

2016-08-06 14:23:51 322

原创 求二叉树中两个节点的最近公共祖先节点

二叉搜索树:如果给定了一个二叉搜索树任意的两个节点的值,要求找到这两个结点的最近的公共结点:如输入12和8输出 10它们有共同的祖先10和25,选择最近的祖先10;算法:给定两个节点node1和node2,如果node1所以我们可以前序遍历这个二叉搜索树若遍历到一个节点大于node2,所要求的结点就在此结点左侧,如遍历到15,那就在15左边否则在此结

2016-08-03 15:25:52 1392

原创 网易练习题,专辑问题

你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?输入描述: 每组测试用例仅包含一组数据

2016-08-02 16:25:17 521

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除