自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 红黑树

看红黑树之前先看AVL树有很多相似的地方,我也写了一篇AVL树的总结,我就没重复总结了。 我们先看红黑树特性1.根节点是黑色2.每个节点只能是黑色或者红色3.如果一个节点是红色,它得子节点必须是黑色的。4.每个叶子节点(NIL)是黑色的,这里可以是所有叶子节点连着最后一个(黑色的)哨兵节点(为NULL)。5.从任意一个节点到其叶子节点的所有路径中,包含相同数目的黑色的节...

2018-08-11 01:08:54 80

原创 平衡二叉树

博客思路1.通过二叉排序树引出平衡二叉树2.如何判断是不是一棵平衡二叉树3.平衡因子4.左旋  右旋   双旋5.通过画图创建一棵二叉排序树6.二叉排序树的代码思路和整体框架 1.二叉排序树二叉排序树,又叫二叉查找树,它或者是一棵空树;或者是具有以下性质的二叉树:1. 若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2. 若它的右子树不空,则右...

2018-08-03 04:22:30 8958 4

原创 普通二叉树

1.什么是二叉树树是一种比较重要的数据结构,它可以是二叉树,三叉树,可以说多叉树,但是我们今天是来看二叉树。二叉树是使用最广的树,二叉树是n个结点的有限集合,该集合为空集时候,就是我们空二叉树。或者有一个根结点有两棵互不相交的树分别称为左子树和右子树(或左孩子和右孩子),其次序不能任意颠倒。画张图看一下 根结点:                           结点A分...

2018-07-27 11:10:50 1466

原创 智能指针

1.智能指针作用提出智能指针时候,不得不提一下栈和堆。我们都知道,栈上的资源是由系统管理的,申请和释放资源都是由栈的策略来进行的。而堆上的资源申请,是用户显示的调用关键字new 和 delete来进行申请资源和释放资源,该资源的生命周期是执行new语句申请资源    到执行 delete释放资源。(或者程序结束由系统释放这部分堆资源)。这时候我们在来谈一下智能指针的作用和原理。智能...

2018-07-24 22:36:52 286

原创 编译和链接

前小半部分参考《程序员的自我修养》1.源代码为什么需要编译链接编译类的语言(c 或者c++)写出的源代码机器是看不懂的,机器看懂的是可执行的代码。而源代码转化成可执行代码需要经过编译和链接。2.编译链接步骤(1)预编译  (2)编译 (3)汇编  (4)链接#include <stdio.h>int gdata1 = 10;int gdtata2 = 0;int gdtata3...

2018-07-12 13:15:40 382

原创 普通成员方法和静态成员方法的区别

1.静态数据成员我们在了解普通成员方法和静态成员方法之前,先了解一下静态变量。在我们函数栈上定义一个普通变量之后,它的生存周期就是随着函数执行完,栈帧的回退释放掉。优点是封装了数据变量。全局变量的生存周期是该程序开始执行到该程序结束,作用域是全局下的,全局的函数都可以访问。(这样会引发很多问题因为这个不安全,没有很好的封装)。我们现在想要一个函数定义一个变量之后,该变量在函数执行完后,仍然值不变,...

2018-05-24 00:56:55 3719

原创 strtok 和strtok_r 函数使用

1.strtok这个函数我们再熟悉不过了,因为我们要经常要和字符打交道,不可避免的要

2018-05-18 06:28:33 1358 1

原创 x86虚拟地址映射

分析x86体系下虚拟地址映射前,我们先提出一个问题,打印一个局部变量的地址,这个地址是什么地址??逻辑地址?线性di'zh

2018-05-15 03:09:59 663

原创 信号量

什么是信号量信号量主要保护共享资源的,确保该资源在同一时刻只有一个线程占用。换句话说它就是控制多进程(多线程)共同访问共享资源的一种手段。信号量的定义最初的定义:信号量是一个特殊的变量,它只能取正整数值,并且程序对其访问都是原子操作。正式的定义:它是一个特殊的变量,只允许对它进行等待和发送信号。信号量就是一种特殊的计数器当其值>0时,其表示可用临界资源的个数当其值<0,表示资源忙,至少...

2018-04-30 18:29:41 1739

原创 01背包

01背包01背包题目给了很多个物品,W和V是两个数组,第i个物品重量是W[i],价值是V[i]。背包最大承受重量为n。如何让这个背包装的价值最大。01背包就是每个物品只有一件。定义一个和(物品总个数+1)的数组,当判断出这个物品需要装进去时候就置为1,不装进去置为0。这个就是这个数组。这也是为啥叫做01背包。粘贴一个题目过来int W[6] = {0 , 2 , 5 , 3 ,...

2018-10-06 17:56:07 56

原创 指针和引用的区别

 引用引用是给另外一个变量起的别名,所以引用不会分配内存空间引用和指针的区别1.指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。2.引用在定义的时候必须进行初始化,并且不能改变,指针定义时候之后也可以改变指向。所以指针有判空操作,引用则不必。引用时候就是至死不渝。3.指针和引用自增运算结果不一样。4.引用访问一个变量是直接访问,而指针访问一...

2018-09-25 17:53:55 63

原创 C和C++区别

1.const *   和引用&const常量   常变量常变量就是不能做左值,其他都和变量性质一样的。常量在编译时候所有用到常量的地方都替换成常量的初始值。1.C和C++第一个区别:  我们什么时候要加常引用呢?很明显就是在引用我们常量的时候需要我们常引用。 函数返回值内置类型产生的临时量都是常量    不可更改     通过e...

2018-09-24 13:32:08 971

原创 内部排序和外部排序

 内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序期间全部对象太多,不能同时存放在内存中,必须根据排序过程的要求,不断在内,外存间移动的排序。 位置1.内部排序内部排序是排序的基础,在排序的过程中,把所有元素调到内存中进行排序,称之为内部排序。2.外部排序在数据量大的时候,只能分块排序,但是块和块排序不能保证有序,外排序用读写次数来衡量其效率。...

2018-09-20 01:38:30 2085

原创 快速排序

快排思想:快速排序就是取一个数将所有数据分割两部分,前一部分数字比取的数字小,后一部分数字都比取的这个数字大。这样的情况下,就能确定取的这个数就在这个位子。然后在通过分治思想,把两部分数据接着使用快速排序,递归的思想把所有数据能排好序。优化策略:1.三点取中就是三个数取到第二大的,如果快排的话每一趟取到整个数的越中间越好。2.少数量数字,用插入排序3.聚集优化遇到像年龄...

2018-09-19 17:27:43 85

原创 堆排序

什么是堆弄清楚堆排序之前,先弄清楚什么是堆。堆就是一个数据结构,是一个完全二叉树,满足所有的非叶子结点的值大于等于左右孩子结点。n个数的集合{a1,a2,a3,a4,a5.........ai......an}     // i在这里表示下标左孩子结点 :相当于(父结点*2)   //*乘以的意思右孩子结点: 相当于(父结点*2+1)//*乘以的意思 小根堆满足      ...

2018-09-18 11:20:39 46

原创 继承多态

1.继承方式私有继承  ,保护继承     公有继承私有继承:基类                               派生类                               对外接口pulbic                             private                                不可见protect    ...

2018-09-17 02:56:40 273

原创 守护进程

1.守护进程守护进程创建1.fork创建子进程,父进程终止,让子进程在后台继续执行。(产生孤儿进程)2.子进程调用setsid产生新会话期并失去控制终端调用的setsid()使子进程进程成为新会话组长和新的进程组长。setsid 目的:由于创建守护进程第一步调用了fork ,父进程的会话期,进程组,也被子进程拷贝了。setsid函数就是为了使得它完全独立开来,从而摆脱其他进程的控制...

2018-09-16 12:08:42 156

原创 面向对象

面向对象基本概念对象:一般意义上的对象:是现实世界的一个实际存在的事物。一个人的个体,或者一个事物面向对象的方法中的对象:是系统中用来描述客观事物的一个实体。抽象与分类类:就是基于分类和抽象思维形成的,同一类对象我们可以抽象出它的共同属性和行为,形成类。比如:老师是一个类。学生一个类。这就是分类类和对象的关系:类型和实例的关系就和模具和铸件之间的关系 ...

2018-08-21 15:46:14 56

原创 分治策略

1.分治策略的思想分治就是把规模大的问题,划分为彼此独立的,规模小的结构相似子问题。直到划分到子问题能直接求解时,就通过递归来实现求解所有子问题,并合并所有解。因此递归和分治可以说是孪生兄弟。2.分治步骤第(1)步:分 把一个规模大的问题,划分成若干结构相同,能独立求解的子问题。第(2)步:治通过递归,求出每个子问题的解。第(3)步:合并把所有子问题的解,合并成一个更大规模问题的解。这里举个例子:...

2018-07-09 23:14:28 79

原创 三次握手四次挥手

1.背景在说三次握手和四次挥手之前我们先得提一下,

2018-06-30 18:35:23 73

原创 Linux 管道

什么是管道管道是最基本的进程间通讯,它是半双工的通讯(数据流是定向的)。它创建于内存缓冲区中,用于连接一个写进程一个读进程,大小刚好为一个页(4KB)。一个进程把数据写入管道,由内核定向的流入另一个读进程。(多进程通讯中要用锁控制,防止一个进程在读取管道里数据没读完就被其他进程读走之类的问题)管道概念管道用的是利用文件系统file结构,和VFS索引节点inode来完成的结构。通过两个file文件指...

2018-04-19 00:16:04 1342

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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