stl--avl树

avl树

特性:
avl树又称自平衡二叉树查找树,平衡二叉树是,任一节点的左右子树的高度差不能超过1

首先它是一颗二叉查找树,所以任何父节点的值大于左孩子节点小于右孩子节点的值。
但是普通的二叉查找树不能够充分的体现二分的特性,它的左右子树可能分布并不均匀。
所以在查找和插入的时候复杂度可能会退化成线性的。所以,这时就需要来通过旋转操作
才维持树的平衡性,所以这就是自平衡二叉查找树。它通过各种旋转操作来保持树的平衡性。

stl_空间配置器

空间配置器

空间配置器: 用来分配内存。它并不会给我们直接使用,而是在容器之后默默工作。

在c++中,一般使用new
在c++中,一般使用new来来分配内存,同时并调用构造函数来完成值得初始化,但在stl中,这两步是分开的
首先有空间配置器来分配内存,然后调用construct函数来完成在指定内存完成值得初始化。
构造可以调用place new 来在指定的内存空间来声明对象,和初始化值。但是毕竟类才需要调用构造,
有的对象并不需要使用构造函数。使用简单的内存拷贝就能达到目的。

算法--大整数算法

本文主要整理了几个常用的大整数的算法:
大整数加法
大整数乘法
大整数阶乘
大整数幂
其实大体的思路都差不多,都是用数组来存储大整数。以下的代码仅仅实现功能,并没有充分详细的参数判断,在实际运用中,肯定是需要考虑的。

面试题整理2


const 限定一个对象为只读属性。
(1)const char p 限定变量p为只读。这样如p=2这样的赋值操作就是错误的。
(2)const char p p为一个指向char类型的指针,const只限定p指向的对象为只读。这样,p=&a或 p++等操作都是合法的,但如p=4这样的操作就错了,因为企图改写这个已经被限定为只读属性的对象。
(3)char const p 限定此指针为只读,这样p=&a或 p++等操作都是不合法的。而p=3这样的操作合法,因为并没有限定其最终对象为只读。
(4)const char const p 两者皆限定为只读,不能改写.

数据结构--红黑树

红黑树的满足条件

每个结点要么是”红色”,要么是”黑色”
所有的叶子结点都是空结点(NULL),并且是”黑色”
如果一个结点是”红色”的,那么它的两个子结点一定是黑色。
结点到其子孙的每条简单路径都包含相同的黑色结点
根结点永远是黑色。

算法--将两个栈封装成队列

纵然栈和队列是两种不同的数据结构,但是两者是可以相互转换的

把栈封装成队列

对于栈,就采用c++里面的stack
使用两个栈,栈是先进后出,而队列是先进先出
现在有两个栈,一个栈A放数据,另一个栈B为空,只要把前面栈A的数据
出栈然后压到栈B,然后出栈。因此数据只要从栈A进,从栈B出就可以了

算法--kmp字符串匹配算法

简单介绍

kmp算法是一种字符串匹配算法,用来判断字符串A是否在字符串B中。
kmp是由Knuth,Moriis和Pratt三个人设计,所以称为kmp算法。
kmp是一个高效的算法,而普通的字符串匹配每次循环遍历所以复杂度为O(mxn)
而kmp算法的时间复杂度,理论上是O(n)

unix_c--IPC使用步骤

简介

进程之间的通信包括多种:管道(有名管道,无名管道),
信号,文件IO,共享内存,消息队列,信号量,socket。
以下介绍的是共享内存,消息队列和信号量,这是三种
常用的进程间的通信方式。

,