c++语言
文章平均质量分 83
pamelay
这个作者很懒,什么都没留下…
展开
-
C++实现顺序表
#includeusing namespace std;typedef int Datatype;class Seqlist{public: friend ostream& operator Seqlist(Datatype* pdata=NULL) //构造函数 :_sz(0), _capacity(0) {原创 2016-08-24 23:40:08 · 626 阅读 · 0 评论 -
哈希表的实现
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(原创 2016-11-02 10:42:07 · 277 阅读 · 0 评论 -
c++实现搜索二叉树
#include#include#includeusing namespace std;templatestruct BinaryTreeNode{T _key;BinaryTreeNode* left;BinaryTreeNode* right;BinaryTreeNode(const T& x):_key(x),left(NULL),righ原创 2016-10-18 18:15:00 · 362 阅读 · 0 评论 -
AVL二叉树
在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis。AVL处理了搜索二叉树的特殊情况。 AVL树中的每个左子树原创 2016-10-26 21:36:48 · 672 阅读 · 0 评论 -
拉链法处理哈西冲突
上一篇博客介绍了哈希表及处理哈西冲突的一种算法——开放定址法,这篇博客在介绍一下处理哈西冲突的另一种方法——拉链法。就是建立哈希表后,在每个位置下联一条链表,将数据用哈希函数处理后放入相应的链表中。 我个人认为就处理哈希冲突的这两种算法来说各有利弊,因为建立哈希表为了便于查找;使用开放定址法时,当第一次定位没找到时,会向后遍历直到找到或遍历完整个哈希表为止,极端时要遍历整个表原创 2016-11-07 13:58:59 · 5532 阅读 · 0 评论 -
大小堆的建立
#include#include#include#includeusing namespace std;templatestruct Less{bool operator()(T& l,T& r){return l}};templatestruct Great{bool operator()(T& l,T& r){return原创 2016-10-12 20:22:55 · 488 阅读 · 0 评论 -
迷宫问题
#include#include#include#includeconst int N=10;using namespace std;struct Pos{int _row;int _col;Pos(int row=0,int col=0):_row(row),_col(col){}};void InitMaze(int* a){原创 2016-10-11 18:25:05 · 201 阅读 · 0 评论 -
线索化二叉树
#include#includeusing namespace std;enum Tag{THREAD,LINK,};templatestruct TreeNode{T _data;TreeNode* _left;TreeNode* _right;Tag _leftTag;Tag _rightTag; TreeNode(const T原创 2016-10-11 18:34:12 · 234 阅读 · 0 评论 -
非递归遍历二叉树
#include#include#include#include#includeusing namespace std;templatestruct TreeNode{T _data;TreeNode *left;TreeNode *right;TreeNode(const T& t=T()):_data(t),left(NULL),ri原创 2016-10-11 18:32:30 · 219 阅读 · 0 评论 -
二叉树的递归遍历
#include#include#includeusing namespace std;templatestruct TreeNode{ T _data; TreeNode *left; TreeNode *right;};templateclass Tree{ typedef TreeNode Node;public: Tree()原创 2016-10-11 18:30:43 · 327 阅读 · 0 评论 -
模拟实现智能指针
首先说一下RAII(资源分配及初始化),定义一个类封装资源的分装和释放,在构造函数中完成资源的分配及初始化,析构函数完成资源的清理,是c++中常用的管理资源,避免内存泄漏。实现了自动释放资源。 智能指针:自动管理指针指向的动态资源的释放。 常见的有STL的auto_ptr,boost库的sharde_ptr,weak_ptr,scoped_ptr等等····· 其区别是auto_原创 2016-09-07 16:04:23 · 252 阅读 · 0 评论 -
类模板实现顺序表
#includeusing namespace std;templateclass SeqList{public: SeqList() :_pdata(NULL), _sz(0), _capacity(3){ _pdata=new T[_capacity];} ~SeqList() { if(_pdata!=NUL原创 2016-09-06 20:51:18 · 631 阅读 · 0 评论 -
由仿函数引出的定制删除器
先简单介绍一下仿函数是什么:仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 简单定义了一下删除器需要的仿函数#include#include#includeusing namespace std;struct Fclose{ void operato原创 2016-09-06 20:41:26 · 255 阅读 · 0 评论 -
两个栈实现一个队列
两个栈模拟实现队列原创 2017-07-20 11:58:19 · 240 阅读 · 0 评论