二叉堆的实现

1.堆的概念 这里只需要注意两点: a.堆的存储方式:就是顺序存储在数组中,在二叉树中表现为满二叉树 b.堆的用处:用于排序,查找最大最小都非常方便   2.堆的实现 heapexception.h   #ifndef HEAPEXCEPTION_H #define HEAPEX...

2012-08-12 11:35:38

阅读数:3

评论数:0

KMP算法解析

  一.理论基础 1.什么是kmp算法 同BF算法一样,就是串的模式匹配算法。 前面已经学过,我想都应该明白BF算法,就是用一种最直观的方式进行模式匹配。 优点:非常容易理解,是我们常用的思维方式来编程; 缺点:效率比较低,在匹配不成功的时候,回朔做了许多无用功;   从而根据其缺...

2012-08-12 11:35:06

阅读数:4

评论数:0

常见字符串操作大全

1.常见的字符串操作 如计算长度,求子串等都是考验基本功的,现在基本操作进行实现,如下   2.基本实现 mchar.h   //串的基本操作(注意:里面的所有操作要求串必须以'\0'结束) #ifndef MCHAR_H #define MCHAR_H //注意:这里面的i...

2012-08-12 11:34:44

阅读数:7

评论数:0

排序方法总结

这里面包含了所有常见的排序操作 1.性能等比较分析 2.代码实现 sort.h   //各种排序方法总结 #ifndef SORT_H #define SORT_H template<class T> class Sort{...

2012-08-12 11:34:14

阅读数:8

评论数:0

set和map的简单实现

1.Set的简单实现 set是利用二叉查找树来实现的,而且为了查找方便,添加了另外两个指针,一个指向下一个最小结点,一个指向上一个最大结点。 iset.h   //利用二叉查找树实现set #ifndef ISET_H #define ISET_H template&am...

2012-08-10 11:35:25

阅读数:8

评论数:0

红黑树的插入总结

1.红黑树 这个在july的博客中有详尽的说明,我就不在赘述了 http://blog.csdn.net/v_JULY_v/article/details/6105630   2.红黑树的插入 插入见下图:  

2012-08-10 11:25:43

阅读数:7

评论数:0

B-树实现

1.什么是B-树? 这个在我的前一篇博客中已经详细的阐释过: http://hao3100590.iteye.com/blog/1576846 具体的了解,好好看看这篇文章就可以了!   2.实现关键问题分析 a.B-树删除原则 见下图:  当然总结起来,大的方面就3点,具体的细节...

2012-08-10 11:03:15

阅读数:63

评论数:0

平衡二叉树

1.问题描述 什么是平衡二叉树?在此就不在赘述,下面主要就几个关键问题进行分析   2.关键问题 a.AVL树的非递归与递归插入 平衡二叉树的非递归的关键: 1.在寻找插入位置和旋转的时候设置其路径上的平衡因子,这个要特别注意 当然非递归比递归复杂的多,但是对于理解其执行过程很有帮...

2012-08-10 10:39:48

阅读数:8

评论数:0

二叉排序树

  1.基本概念 二叉排序树,树的定义就不赘述了,主要就是想说明一下在设计类的过程中需要注意的问题。 a.问题引入? 设计插入,删除等操作的过程中,我们的二叉排序树根节点的指针有可能改变,如删除根结点的指针操作,那么root的指针指向已经不是原来的位置,而是新的位置,怎么样才能返回最新的位...

2012-08-10 10:25:18

阅读数:12

评论数:0

B-树

1.B-树的概念 是一种多路搜索树,适合在磁盘等直接存取设备上组织动态的查找表,可能部分数据不在内存中。它作为索引文件的一种重要存储结构(数据库索引) 对于m阶(m>=3)B-tree,满足如下特性: 1)树中每个节点至多有m个节点 2)根节点子树个数在:2---m(...

2012-07-04 22:48:35

阅读数:11

评论数:0

构造哈夫曼树

1.算法说明 就是建造哈夫曼树树,从而使得构造出的树带权路径长度最小   2.步骤   输入叶子结点个数n; 创建长度为2*n-1的数组并初始化; while(i<n) 循环输入n个叶子结点的权值; while(n-1次循环建立树){ 在parent==-...

2012-07-04 10:40:17

阅读数:25

评论数:0

线索二叉树

1.算法描述 就是简单的线索二叉树的建立,遍历,查找等基本操作,具体什么是线索二叉树,百度一下!   2.算法说明 具体说明有四点:如下图 注:尤其要注意第4点,我在写的时候就没注意这个问题,结果遍历的时候出现了无限循环,找了半天才找到!主要是建立二叉树判断的惯性思维,故而容易出现错...

2012-07-04 09:20:15

阅读数:9

评论数:0

二叉树基本操作大全

1.二叉树的基本操作 这里我有一个疑问:   在使用构造函数的时候,传参数的问题? 开始我是这么理解的------只使用指针(其实指针本身就是一个地址,相当于引用,也会改变root建立起二叉树),而2指针的引用,相当于就是对记录了指针的地址,采用了二次引用,其实是没有必要的,一次就够了。但...

2012-07-03 18:22:17

阅读数:4

评论数:0

多种队列的实现

1.算法描述 a.数据结构与算法(Mark Allen Weiss)3.28双端队列的实现,在队列的两端都可以进行插入和删除工作,每种操作复杂度O(1). b.没有头结点和尾结点的队列实现 c.循环数组的队列实现   2.算法实现 a.由于有复杂度的限制,和两端插入删除,故而使用数组是...

2012-06-29 10:09:57

阅读数:7

评论数:0

栈的各种实现

1.算法描述 a.实现二个栈,在一个数组里面,除非没有任何空间剩余,否则不能有溢出声明 b.实现一个没有头尾结点的栈(单链表) c.实现带有头结点的栈(单链表)   2.双栈 对于双栈,我们还可以添加resize()方法,当空间满了重新自动分配空间(new),就是将原来的两个栈,拷贝到...

2012-06-28 16:34:11

阅读数:4

评论数:0

中缀表达式转换为后缀

1.算法描述   例如a+b*c这是常见的中缀表达式,但是为了方便计算,在计算机中常要转换为后缀表达式abc*+的形式,那 如何转换呢?   用到的关键数据结构:栈 转换的关键原则:   1.优先级判断:关键是比较运算符的优先级,谁的优先级高,谁就出现在前面上面的表达式中,有括号的...

2012-06-28 11:10:16

阅读数:5

评论数:0

后缀表达式的值

1.算法描述 计算后缀表达式的值   2.事例 如:(2+3)*5--->后缀表达式:23+5*,或者523+* 在计算机中不能直接处理算术表达式,我们就转换为后缀表达式利用栈来解决这个问题   3.思想 利用数据结构栈 a.后缀表达式依次入栈,如果遇到操作...

2012-06-27 16:33:29

阅读数:5

评论数:0

vector的基本实现(c++)

1.描述 vector的基本操作实现(包括迭代器)   2.基本操作   3.代码   #ifndef DS_EXCEPTIONS_H #define DS_EXCEPTIONS_H class UnderflowException { }; class IllegalAr...

2012-06-27 09:57:02

阅读数:6

评论数:0

单链表的简单实践

1.算法描述 数据结构与算法分析C++版:3.11 实现一个有序单链表,要求能返回链表大小,打印链表,检测x是否在链表(在则删除,否则添加)   2.实现 List.h   #ifndef LIST_H #define LIST_H #include <io...

2012-06-27 09:29:31

阅读数:4

评论数:0

C++ 迭代器失效的问题

  转载自:http://blog.csdn.net/zhongjiekangping/article/details/5624922 众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让...

2012-06-25 17:15:01

阅读数:5

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭