随笔分类 - C++
摘要:红黑树介绍参考上一篇。 1. 基本定义 RBTNode是红黑树的节点类,而RBTree对应是红黑树的操作实现类。在RBTree中包含了根节点mRoot和红黑树的相关API。注意:(01) 在实现红黑树API的过程中,我重载了许多函数。重载的原因,一是因为有的API是内部接口,有的是外部接口;二是为了
阅读全文
摘要:一、介绍 伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。(01) 伸展树属于二叉查找树,即它具有和二叉查找树一样的性质:假设x为树中的任意一个结点,x节点包含关键字key,节点x的k
阅读全文
摘要:一、概念 AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的查找、插入和删除在平均和最坏情况下都是O(logn
阅读全文
摘要:二叉查找树的c++实现: 1. 节点和二叉查找树的定义 1.1 二叉查找树节点 BSTNode是二叉查找树的节点,它包含二叉查找树的几个基本信息:(01) key -- 它是关键字,是用来对二叉查找树的节点进行排序的。(02) left -- 它指向当前节点的左孩子。(03) right -- 它指
阅读全文
摘要:一、介绍 队列(Queue),是一种线性存储结构。它有以下几个特点:(01) 队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。(02) 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。队列通常包括的两种操作:入队列 和 出队列。 二、实现
阅读全文
摘要:栈(stack),是一种线性存储结构,它有以下几个特点: (01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 (02) 向栈中添加/删除数据时,只能从栈顶进行操作。 栈通常包括的三种操作:push、peek、pop。 push -- 向栈中添加元素。
阅读全文
摘要:c++实现双向链表 : 1 #ifndef DOUBLE_LINK_HXX 2 #define DOUBLE_LINK_HXX 3 4 #include <iostream> 5 using namespace std; 6 7 template<class T> 8 struct DNode 9
阅读全文
摘要:C++在发展的后期增加了模板(template )的功能,提供了解决这类问题的途径。可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数。 比如: 都是比较大小的函数,只是参数类型不同,于是用一个类模版综合成一个函数: 1. 用类模板定义对象时用以下形式: 类模板名<实际类型名> 对象名; 类
阅读全文
摘要:栈和堆都是一种数据项按序排列的数据结构,用来存储数据。 数据结构中: 栈:FILO(先进后出)的数据结构,类似桶;是运算受限的线形表。 堆:FIFO(先进先出),完全二叉树 内存分配中: 一般情况下 程序存放在Rom或Flash中,运行事需要拷贝到内存中执行,内存会分别存储不同的信息。 内存分配中国
阅读全文
摘要:在c++中,vector是一个十分有用的容器。 作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 特别注意: 使用vect
阅读全文


浙公网安备 33010602011771号