- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Trie tree 字典树的实现
const int _Size = 26;struct TrieTreeNode { int num; // (标记该节点是否可以形成一个单词,如果count!=0, 则根节点到该节点可以形成一个单词) TrieTreeNode* next[_Size]; /* TrieTreeNode() { num = 1; for (int i = 0; i < _Size;...
2019-01-23 01:40:06 265
原创 AVL平衡二叉搜索树
AVL tree是一个“加上了额外平衡条件”的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(logN)。平衡二叉搜索树的大部分实现与普通的二叉搜索树相同,区别在于插入和删除节点之后需要对节点做一个旋转操作来维持平衡。侯捷先生在STL源码剖析中提到,直观上的最佳平衡条件是每个节点的左右子树有着相同的高度,但这也未免太过严苛,我们很难插入新元素而又保持这样的平衡条件。AVL tree于是
2017-09-04 15:04:58 329
原创 二叉搜索树的实现
二叉搜索树又称二叉排序树或二叉查找树,具有以下几个性质: (1)、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; (3)、它的左、右子树也分别为二叉搜索树。将一个整型数组用二叉排序树表示出来,其中序遍历就是整型数组的升序排序。在常用排序算法中,二叉排序树是排序效率较高的
2017-09-03 20:38:35 253
原创 二叉树的遍历(递归与非递归)
二叉树就是每个结点最多有两个子树(左子树和右子树)的树形存储结构。二叉树的链式存储结构如下:struct TreeNode { char val; TreeNode* left; TreeNode* right; TreeNode(char x) : val(x), left(NULL), right(NULL) { }};
2017-08-28 17:29:33 264
原创 LRUCache算法的简单实现
LRU是Least Recently Used的缩写,意为最近最少使用算法。LRUCache是一种常用的缓存替换算法,根据使用率淘汰数据,即使用率最小的会被淘汰,通常会用一个双向链表来实现,在这个双向链表中,如果一个cache被命中,则将这个数据移动到链表的头部,而不经常使用的cache就会逐渐移向链表的尾部,我们会给这个链表设置一个大小作为该双向链表的最大容量,当链表达到最大容量时,就取出链
2017-08-28 16:16:02 538
原创 给定一个double类型的浮点数m和int类型的整数n,求m的n次方
求m的n次方,这种问题看上去简单,但是我们需要考虑多种情况,由于没有说明给的int类型的整数n是大于0还是小于0,因此,我们需要考虑n大于0和小于0这两种情况。#include #include using namespace std;double power(double m, int n){ //double m1 = m; double temp =
2016-11-06 00:27:23 1484
原创 C++ 深拷贝与浅拷贝
浅拷贝:没有自定义的拷贝构造函数,使用的是C++编译器自动产生的一个默认构造函数,默认的构造函数采用的是“位拷贝”,也就是浅拷贝,并不是“值拷贝”,也就是深拷贝。定义一个类 A,有A obj1; 不自定义拷贝构造函数时,即 A obj2(obj1) 或 A obj2 = obj1; 浅拷贝使得obj1和obj2指向同一块内存,调用析构函数时,要对同一个资源析构2次,即对同一块内存释放2次,这是
2016-10-15 13:52:31 253
原创 C++ 多态的实现
多态是C++面向对象的三个基本特征之一,是比较一个重要的概念。实现多态,有两种方式:覆盖和重载。覆盖:子类重新定义父类的虚函数的做法。重载:允许存在多个同名函数,而这些函数的参数列表不同(参数个数不同,参数类型不同等)。在面向对象编程中我们重点看下覆盖的实现吧。子类重新定义父类的虚函数,首先要有继承,其次父类中要有被定义为虚函数的成员函数,通过虚函数机制实现了在程序运行时根据调用对象来
2016-10-12 17:00:13 247
原创 C++ 抽象类与接口
C++中抽象类是指至少包含一个纯虚函数的类,一般格式如下:class {public:virtual (参数列表) = 0;}接口的实现是通过定义子类来继承父类(抽象类),在子类中对父类中的纯虚函数进行定义,举一个简单的实例,如下:/**C++ 接口是使用抽象类来实现的如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指
2016-10-11 22:37:02 286
原创 C++ 链表实现
#include #include //#include using namespace std;typedef int DataType;typedef struct node{ DataType data; node *next;}linkNode;//链表初始化/**初始化链表头部指针需要用二级指针或者一级指针的引用**/voi
2016-10-11 22:10:00 249
原创 ACM程序设计之马拉松竞赛
题目描述:校ACM协会近四个月举行了为期100天ACM程序设计之马拉松竞赛,竞赛题总数为1000,同学们反响热烈,先后有许多ACM程序设计竞赛爱好者报名,这些选手按报名时间从1开始先后编号,成功解答的题目数为选手的成绩。今天进行成绩统计和颁奖仪式,已知按编号排序的选手成绩(各不相同),根据给定标准成绩将这些选手划为两个部分,小于标准成绩的选手不能获得任何奖项,大于等于标准成绩的选手将得到嘉奖,
2016-09-16 20:33:25 612
原创 输出1到某个整数范围中所有的完数
定义一个数 n,要求输出1~n 之间的所有的完数。Sample Input:100 5000Sample Output:100:6 28 5000:6 28 496所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是
2016-09-08 20:00:49 3684
原创 判断一个数是否为对称且不大于五位数的素数
判断一个数是否为对称且不大于五位数的素数,先判断该数是否是素数,在此条件下载判断是否对称。素数的条件:只能被1和本身整除;判断素数的思想:对小于该数的正整数进行遍历,看是否能被整除。判断素数代码:int prime_num(int n){ for(int i=2; i<=n; i++) { if(n%i == 0) {
2016-09-08 17:57:41 4410
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人