Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

面试数据结构问题总结

面试数据结构问题总结

一、 平衡二叉树:除叶子节点外,任意节点的子树高度之差不超过1。二、完全二叉树:除了最底下一层外,每层都是满节点,最底下一层节点是从左到右排列的。三、二叉搜索树:左儿子val<父节点val<右儿子val四、红黑树红黑树有哪些性质?1. 只有红色和黑色两种节点;2. 根节点是黑色的;3. 叶子节点是null节点并且是黑色的;4. 红色节点的两个儿子都是黑色的;5. 对于任意一个节点,它到其叶子节点的所有路径上有相同数量的黑节点;由上面这些性质,可...
根据入栈顺序判断出栈顺序的合法性

根据入栈顺序判断出栈顺序的合法性

这道题不管是面试还是笔试的选择题都非常爱出的一道题题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,5,2,3,1就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1<=n<=100000),表示序列的长度。第二行包含n个整数,表示栈的压入...
STL库中string类内存布局的探究

STL库中string类内存布局的探究

在STL中有着一个类就是string类,他的内存布局和存储机制究竟是怎么样的呢?这就是建立好的string可以看出,图中用黄色框框标注的部分就是主要区域我们用来给string对象进行初始化的字符串被存储在了_Buf当中,_Mysize和_Myres就不用说了,就是上面的size 和 capacity 的值。当只有一个字符作为字符串的时候,就可以很明显的看出来了,_Mysize是指字符串的length_Myres还是没有改变,_Myres最大就是15么?此时...
Python基础教程:面向对象编程

Python基础教程:面向对象编程

模块和包包: 文件夹 (可以有多级), 且包含__init__.py文件(每层都要有) 模块: py文件代码分开放在多个py文件(模块名=文件名). 同名变量互不影响.模块名冲突: 把同名模块放在不同包中.导入模块from math import logfrom logging import log as logger引用时: 使用完整的路径(包+模块名). ex. p1.util.f()动态导入模块try:from cStringIO import St...
STL的迭代器和类型萃取

STL的迭代器和类型萃取

今天就可以把STL库中迭代器的实现,和类型萃取好好整理一下了迭代器的设计思维是STL的关键所在,在STL的实际运用和泛型思维,迭代器都扮演着十分重要的角色,STL力求把数据容器和算法的概念分开来,于是就有了STL的两大部分,容器(container)和泛型算法(algorithms),泛型算法有很多参数都是迭代器。举一个栗子!泛型算法find()的实现!template<class InputIterator, class T>InputIte...
Python基础教程:函数式编程

Python基础教程:函数式编程

函数式编程: 更抽象, 更脱离指令(计算机), 更贴近计算(数学).不需要变量 (python允许有变量, 所以python非纯函数式)高阶函数闭包: 返回函数匿名函数高阶函数变量可以指向函数 f=abs; f(-10)函数名: 就是指向函数的变量 abs=len高阶函数: 接收函数作为参数的函数def add(x,y,f): return f(x)+f(y)add(-5, 9, abs)map()map()是 Python 内置的高阶函数,它接收一个函数...
OpenCV中存储和读取我们数据的函数

OpenCV中存储和读取我们数据的函数

Basic data persistence and storage 在本文中,我们将探索OpenCV中存储和读取我们的数据的函数。在许多应用中,比如校准(calibration)或者机器学习,我们需要处理数据计算,就需要保存结果以备下一个执行阶段重新获取。为此,OpenCV提供了一个XML/YAML保持层(persistence layer)。1. 写入文件存储(Write to a file storage) 要将OpenCV数据或者其它数值数据写...
堆(Heap)的实现

堆(Heap)的实现

这次实现了堆,这个堆不是指系统堆栈的堆,是一种数据结构,见下图堆的本质就是一个数组(上图中,红色的是值,黑色的是下标)简单的来说就是把一个数组看成是二叉树,就像上图大堆和小堆分别是指根节点比孩子节点的值大或者是小,看了上图之后就可以发现,父亲节点和孩子节点之间下表的关系,parnet=(child-1)/2利用这个关系就可以实现堆了,堆的基本方法有构造,析构,插入,删除,像大堆小堆这样特殊的堆肯定是要有调整函数来保持他们的特性的,所以我还写了向上调整和向下...
C/C++ 对常见字符串库函数的实现

C/C++ 对常见字符串库函数的实现

在C中的string.h头文件中存在很多对字符串进行操作的函数,利用这些函数可以方便的对字符串进行操作。下面将对常见的字符串函数进行解释和实现。strcpy函数原型:char* _strcpy(char* dest,char* src)函数功能:将str所指由nullptr的字符串复制到dst所指的数组中,并返回dest的指针。函数说明:保证src和dest所指内存区域不能重叠且dest必须有足够的空间来容纳src的字符串。函数实现char* _strcp...
多态实现之虚函数

多态实现之虚函数

多态的实现分为静态多态和动态多态,静态多态主要靠函数重载,动态多态主要靠虚函数当类中声明了虚函数之后,该类的内存映像会获得一个虚表指针,叫做_vfptr指向该类的虚表,下面的我测试使用的类图(有的没必要的东西没有写)这里恰好还是一个菱形继承,但是就像我之前说的虚继承和虚表关系不大,所以单继承也是可以测试的其中高亮的部分就是虚表指针,用内存窗口就可以看到虚表中存放的东西了,每一个多态类的对象都有一个自己的虚表指针,并且多继承的对象会有多个_vptr指针m和m...
STL库的内存配置器(allocator)

STL库的内存配置器(allocator)

正在学习中,如果有错,还请多多指教,根据不断的理解,会进行更改,更改之前的样子都会保留下来,记录错误是最大的进步,嗯嗯!STL源码剖析简体中文完整版(高清晰扫描带目录)PDF 下载地址 http://www.linuxidc.com/Linux/2016-04/129761.htm具有次配置力的SGI空间配置器(SGI是STL的一种版本,也有其他的版本)这里我就不贴出来具体成员和接口的实现了,网上可以搜到STL的源码C++中,new一个变量可以分为两个阶段...
菱形继承问题(钻石问题)

菱形继承问题(钻石问题)

我看到网上有很多人都在说虚继承和虚表的关系,我一直很郁闷,虚继承和虚表没有什么太大的关系,虚表是当有虚函数出现的时候才会有的,光是使用虚继承是不会有虚表的!当然也就不会有虚表指针!!从我后面的截图可以看到使用虚继承对象的内存构造中并没有出现虚表指针!跟虚继承有关的是一个虚基类表(vbptr),这个表在调试的监视窗口是看不见的,但有了虚继承之后使用sizeof可以明显看出,类型所占内存的大小扩大了4个字节!况且问题就不一样好么?虚继承解决的是二义性的问题,而...
<< 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 >>