【C++进阶篇】二叉搜索数 3.1 二叉搜索树的删除(一)首先查找元素是否在二叉搜索树中,如果不存在,则返回, 否则要删除的结点可能分下面四种情况:a. 要删除的结点无孩子结点:直接删除就可以b. 要删除的结点只有左孩子结点:删除此节点后,将此节点直接连接到父亲节点就可以c. 要删除的结点只有右孩子结点:也是直接删除,然后直接把节点连接到父节点上d. 要删除的结点有左、右孩子结点:这个我们在下面分析
【C++进阶】多态 对象中的这个指针我们叫做虚函数表指针(v代表virtual,f代表function)。一个含有虚函数的类中都至少都有一个虚函数表指针,因为虚函数的地址要被放到虚函数表中,虚函数表也简称虚表这里我们要注意:只要有虚函数就有虚函数表
[C++进阶篇]STL中vector的使用 四、深浅拷贝问题resize开辟有效数据空间并初始化时不能使用memset初始化,因为mem系列函数是按字节去处理reserve开辟容量空间时开辟的新空间不能使用memcpy把旧空间的数据拷贝过去,要使用循环赋值过去,因为memcpy是浅拷贝,浅拷贝最后会导致释放旧空间新空间的指针指向一块已被释放的空间,造成程序崩溃
C++初阶——拷贝构造和运算符重载(const成员) 1.2 拷贝构造函数特征:拷贝构造是构造函数的一个重载形式拷贝构造函数只能有一个参数且必须是类类型对象的引用使用传值方式编译器直接报错,因为会引发无穷递归调用
数据结构——六大排序 (插入,选择,希尔,冒泡,堆,快速排序) . 插入排序1.1基本思路把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列
数据结构——堆的实现(细) 这里面我们这期主要就讲解两种方法:向下调整,向上调整这两种方法向下调整算法:作用就是通过从上到下的算法排序,将任意一个堆变成最小堆或者最大堆。步骤:(此处以最小堆为例)1、从根节点的左右孩子中选取一个较小值min2、当前需要调整的数据与较小值min进行比较大于min:和min进行交换,从交换后的位置继续执行第1步;小于等于min:结束
数据结构——队列的实现(细就完事了) 今天我们要是实现的队列是完全相反的,队列是数据先进先出。而在栈中我们使用的顺序表(数组)来实现的。而队列却用单链表来实现是更加合适的。队列:只允许在一端进行插入数据操作,在另一端进行数据操作的特殊线性表,队列具有先进先出FIFO(Frist in First out)。入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头
数据结构——双向链表(保姆级教程,包学包会) 1.双向链表的概念双向链表就是带头双向循环链表我们在学完单链表之后,就感觉这个非常简单了,他的主要表现就是拥有头节点,链表永不为空,不需要二级指针;可以通过一个节点找到上一个或者下一个节点;头尾相连呈环状。他主要结构是由prev、next、data,这三个结构组成,通过prev找到前一个节点,next就不用多说了。
C语言程序环境和预处理 1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。2. 程序的执行便开始。接着便调用main函数。3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值
位段,枚举,联合——画图详解 1. 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段
自定义类型详解——结构体 首先掌握结构体对齐规则:1. 第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的值为83. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
字符函数和字符串函数(下) strtokchar * strtok ( char * str, const char * sep )• sep参数是个字符串,定义了用作分隔符的字符集合• 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标 记。• strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)• s