借你一秒

沉心静气,平常心,做好小事方成大事。

STL中set底层实现方式? 为什么不用hash?

红黑树与hash table最大的不同是,红黑树是有序结构,而hash table不是。但不是说set就不能用hash,如果只是判断set中的元素是否存在,那么hash显然更合适,因为set 的访问操作时间复杂度是log(N)的,而使用hash底层实现的hash_set是近似O(1)的。然而,se...

2015-10-21 21:56:31

阅读数 2334

评论数 0

单链表反转

从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。Node* ReverseList(Node* head)   {       Node *p,*q;        p=head->next;       while(p->ne...

2015-09-23 16:20:52

阅读数 1018

评论数 0

从B 树、B+ 树、B* 树

第一节、B树、B+树、B*树1.前言:动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是...

2015-08-19 21:33:00

阅读数 1180

评论数 0

Strassen矩阵相乘算法

引言Strassen的矩阵相乘方法是一种典型的分治算法。目前为止,我们已经见过一些分治策略的算法了,例如归并排序和Karatsuba大数快速乘法。现在,让我再来看看分治策略的背后是什么。同动态规划不同,在动态规划中,为了得到最终的解决方案,我们经常需要把一个大的问题“展开”为几个子问题,但是这里,...

2015-08-17 20:04:48

阅读数 1179

评论数 0

浅析常用的排序算法

排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内、外存之间移动的排序。内排序的方法有许多种,按所用策略不同,可归纳为五类:插入排序、选择排序、交换排序、归并排序、分配排序和计数排序。插...

2015-08-03 20:40:48

阅读数 1012

评论数 2

[数据结构]最小堆的类模板实现

堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为最大堆和最小堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树...

2015-07-30 18:06:26

阅读数 2263

评论数 1

[数据结构]二叉树之二叉链表的类模板实现

该类模板实现了一个二叉树的模板类,采用二叉链表实现。定义二叉树节点类,采用二叉链表实现。///////////////////////// #include #include #include #include using namespace std; template struct ...

2015-07-29 16:02:00

阅读数 3050

评论数 1

[数据结构]队列之链式队列的类模板实现

链式队列是基于单链表的一种存储表示 队列的对头指针指向单链表的第一个节点,队尾指针指向单链表的最后一个节点, 退出一个元素 则删除对头指针的节点,添加元素则在队尾增加一个节点 使用条件:数据元素变动比较大的情况。不存在溢出的情况 队列的抽象基类: #ifndef QUEUE #d...

2015-06-23 16:06:40

阅读数 1296

评论数 0

[数据结构]队列之顺序队列的类模板实现

队列是一种限定存取位置的线性表,允许插入的一端叫做队尾(rear),允许删除的一端叫做队首(front)。 队列具有FIFO的性质 队列的存储表示也有两种方式:基于数组的,基于列表的。基于数组的叫做顺序队列,基于列表的叫做链式队列。 一下是基于动态数组的顺序队列的模板类的实现。 ...

2015-06-23 13:26:13

阅读数 1022

评论数 0

[数据结构]栈之链式栈的类模板实现

栈的抽象基类的实现:(不用抽象基类也是可以的,为了使用虚函数方便) #ifndef STACK #define STACK //栈的抽象基类 template class Stack { public: Stack(){} ~Stack(){} virtual...

2015-06-22 11:18:01

阅读数 1573

评论数 0

[数据结构]栈之顺序栈的类模板实现

栈的数组实现形式,采用动态分配数组,不够时可以调整栈的大小。 Stack.h文件:主要定义栈的抽象基类,提供公共的接口函数。 #ifndef STACK #define STACK //栈的抽象基类 template class Stack { public: Stack()...

2015-06-20 15:48:40

阅读数 1661

评论数 1

[数据结构]线性表之单链表的类模板实现

类的具体实现如下: ///////////////////////// #include"LinearList.h" #include #include using namespace std; template struct LinkNode //链表节点类 ...

2015-06-18 13:43:51

阅读数 1149

评论数 0

[数据结构]线性表之顺序表的类模板实现

LinearList.h抽象基类: #ifndef LINEARLIST #define LINEARLIST //线性表的抽象基类 template class LinearList { public: LinearList(){};//如果派生类不需要向基类构造函数传递参数...

2015-06-17 17:31:20

阅读数 1652

评论数 0

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