
数据结构
文章平均质量分 74
MJ813
如果万事都是一笑而过,那还有什么意思呢.......
展开
-
BinarySearchTree
#pragma once// Binary Search Tree Nodetemplatestruct BSTNode{ K _key; // 节点关键值 V _value; // 节点数据 BSTNode* _left; // 左孩子 BSTNode* _right; // 右孩子 BSTNode(const K& key, const V& data)原创 2016-09-05 12:48:06 · 325 阅读 · 0 评论 -
对称矩阵、稀疏矩阵
#pragma once#include // 对称矩阵存储templateclass SymmetricMatrix{public: SymmetricMatrix(T* a, size_t size) :_a(new T[size*(size+1)/2]) ,_size(size*(size+1)/2) { assert(a); size_t index原创 2016-09-06 16:10:06 · 689 阅读 · 0 评论 -
顺序表
#includetemplateclass SeqList{public: SeqList () :_data(0) ,_size(0) ,_capacity(0) { _CheckExpand(7); } SeqList (const SeqList& v) :_size(v._size) ,_capacity(v._capacity) { _d原创 2016-09-06 16:11:12 · 290 阅读 · 0 评论 -
C语言实现动态顺序表
/***********************************************************************************xxx.h: Copyright (c) , Inc.(2016), All rights reserved.Purpose: C语言实现动态顺序表Author: MaJingReviser: yyyCre原创 2016-09-06 16:12:46 · 444 阅读 · 0 评论 -
链表
#pragma once#include templateclass Node{ template friend class SList; // 声明为友元public: Node(const T& x) :_data(x) ,_next(0) {} const T& GetData() { return _data; }private: T _dat原创 2016-09-06 16:13:31 · 329 阅读 · 0 评论 -
C语言实现单链表-不带头结点
/***********************************************************************************xxx.h: Copyright Inc.(2013), All rights reserved.Purpose: C语言实现单链表--不带头结点实现Author: MaJingReviser: yyyC原创 2016-09-06 16:15:12 · 1244 阅读 · 0 评论 -
插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序
#pragma once#include #include #include using namespace std;void PrintArray (const int* array, int size){ for (int i = 0; i < size; ++i) { printf ("%d ", array[i]); } printf ("\n");}//原创 2016-09-06 16:17:46 · 599 阅读 · 0 评论 -
使用栈解决迷宫问题
/******************************************************************************************Copyright (c), Inc.(2016), All rights reserved.Purpose: 使用栈解决迷宫问题Author: 迷宫实现Created Time: 2016_9****原创 2016-09-06 16:20:47 · 1116 阅读 · 0 评论 -
使用链式结构实现队列
/******************************************************************************************Copyright (c) Inc.(2016), All rights reserved.Purpose:// 1:直接使用链式结构实现队列// 2:使用链表实现适配器模式的的队列Author: MaJ原创 2016-09-06 16:23:19 · 409 阅读 · 0 评论 -
使用动态数组的方式实现栈
/******************************************************************************************Copyright (c) Inc.(2016), All rights reserved.Purpose:1:使用动态数组方式实现栈 2:另外考虑使用顺序表实现适配器模式的栈(这部分在C++模板部分已讲解过原创 2016-09-06 16:24:59 · 909 阅读 · 0 评论 -
栈和队列常见面试题
// 1.实现一个栈,要求实现push(出栈)、pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)// 2.使用两个栈实现一个队列// 3.使用两个队列实现一个栈// 4.元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)// 5.一个数组实现两个栈// 6.算数表达式的求解。逆波特兰表达式(后缀表达式)原创 2016-09-06 16:26:14 · 800 阅读 · 1 评论 -
shared_ptr
/***********************************************************************************xxx.h: Copyright (c) , Inc.(2016), All rights reserved.Purpose: 模拟实现boost/shared_ptr实现SharedPtrAuthor: MaJi原创 2016-09-06 16:30:41 · 359 阅读 · 0 评论 -
auto_ptr
#pragma once// 简单实现自动释放智能指针// ps:分析以后可以发现AutoPtr拷贝对象时有非常大的缺陷,拷贝后会留下空智能指针对象的隐患template class AutoPtr{public: AutoPtr(T * ptr = NULL) :_ptr(ptr ) {} ~ AutoPtr() { if (_ptr ) { dele原创 2016-09-06 16:31:52 · 284 阅读 · 0 评论 -
ScopedPtr
#pragma once// 简单实现防拷贝版的智能指针template class ScopedPtr{public : ScopedPtr(T * ptr = NULL) : _ptr(ptr ) {} ~ ScopedPtr() { if (_ptr ) { delete _ptr ; } } T* GetPtr() { return原创 2016-09-06 16:33:02 · 524 阅读 · 0 评论 -
SharedPtr
#pragma once//// 简单模拟最初版的shared_ptr的设计,这里不考虑线程安全和循环引用等问题。//namespace ONE{ template class SharedPtr { public : SharedPtr(T* ptr = NULL) : _ptr(ptr ) , _countPtr(new int(1)) {}原创 2016-09-06 16:34:14 · 490 阅读 · 0 评论 -
String类的写时拷贝
/***********************************************************************************xxx.h: Copyright , Inc.(2016), All rights reserved.Purpose: 实现String类的写时拷贝模型Author: MaJingCreated Time: 2原创 2016-09-06 16:35:58 · 327 阅读 · 0 评论 -
单链表list
#pragma once#include //template//class List;templateclass Node{ template friend class List; //friend class List;public: Node(const T& x) :_data(x) ,_next(NULL) ,_prev(NULL) {}pri原创 2016-09-06 16:08:43 · 289 阅读 · 0 评论 -
哈希表
#pragma once//// 哈希表的闭散列线性探测法,使用懒删除的标记法来处理删除的问题。//enum Status{ EMPTY = 0, // 空 EXIST = 1, // 存在 DELETED = 2, // 删除};// 一次探测namespace ONE_DETECT{ template class HashTable { public:原创 2016-09-05 14:35:55 · 354 阅读 · 0 评论 -
BinaryTree
/******************************************************************************************Copyright (c) Bit Software, Inc.(2016), All rights reserved.Purpose: 实现二叉树的基本操作 Author: MaJingRevi原创 2016-09-05 12:49:38 · 917 阅读 · 0 评论 -
线索化二叉树BinaryTreeThreading
/******************************************************************************************Copyright (c) Inc.(2016), All rights reserved.Purpose: 二叉树的前/中/后序线索化Author: MaJingReviser: yyyCreate原创 2016-09-05 12:52:32 · 374 阅读 · 0 评论 -
二叉树相关面试题
/******************************************************************************************Copyright (c) Inc.(2013), All rights reserved.Purpose: 实现二叉树的基本面试题 Author: MaJingReviser: yyyCrea原创 2016-09-05 12:55:28 · 452 阅读 · 0 评论 -
M路平衡B树
#pragma once// M路平衡B树templatestruct BTreeNode{ // KV结构 //pair _kvs[M]; // 关键字、孩纸 // 关键字和孩纸都多给一个,先插入节点再进行分裂 // 简化了分裂逻辑,但是效率会低一些 K _keys[M]; BTreeNode* _subs[M+1]; size_t _size;原创 2016-09-05 12:56:49 · 409 阅读 · 0 评论 -
Huffman实现文件压缩
#pragma once#includeusing namespace std;#include "HuffmanTree.hpp"typedef long long LongType;//#define _DEBUG_// 文件信息struct FileInfo{ unsigned char _ch; // 字符 LongType _appearCount; //原创 2016-09-05 12:58:31 · 628 阅读 · 0 评论 -
堆
#pragma once#include #include using namespace std;template >class Heap{public: Heap() {} Heap(const T* array, size_t size) { assert(array); for (int i = 0; i< size; ++i) { _vec.原创 2016-09-05 12:59:29 · 329 阅读 · 0 评论 -
哈夫曼树HuffmanTree
#pragma once#include "Heap.hpp"///////////////////////////////////////////////////////////////////////// 动态结构templatestruct HuffmanNode{ T _weight; // 权重 HuffmanNode* _parent; // 父节点原创 2016-09-05 13:00:35 · 485 阅读 · 0 评论 -
红黑树
#pragma onceenum Colour{ RED, BLACK,};template struct RBTreeNode{ // Key/Value K _key; V _value; // 节点链接 RBTreeNode* _left; RBTreeNode* _right; RBTreeNode* _parent; // 颜色 Colour _co原创 2016-09-05 13:01:18 · 241 阅读 · 0 评论 -
海量数据处理问题
//// 【海量数据处理问题】// 2015年春节期间,a公司的支付软件某宝和t公司某信红包大乱战。// 春节后高峰以后,公司Leader要求后台的攻城狮对后台的海量数// 据进行分析。先要求分析出各地区发红包金额最多的前100用户。// 现在知道人数最多的s地区大约有1000w用户。要求写一个算法实现。//// 思路:求N个数中最大的前K,使用最小堆解决。#include原创 2016-09-05 13:02:28 · 274 阅读 · 0 评论 -
AVLTree
#pragma oncetemplatestruct AVLTreeNode{ // Key/Value K _key; V _value; // 左右孩子及父指针 AVLTreeNode* _left; AVLTreeNode* _right; AVLTreeNode* _parent; // 平衡因子 int _bf; AVLTreeNode(const K&原创 2016-09-05 12:46:54 · 326 阅读 · 0 评论 -
BitMap
#include#includeusing namespace std;//// 这里实现的是位图BitMap,使用BitSet为了跟STL中的bit_set一致。//class BitSet{public: BitSet() {} BitSet(size_t size) { // 计算需要多个int来存储这些数据。 // 右移5 == /32 //_dat原创 2016-09-05 12:44:59 · 306 阅读 · 0 评论 -
广义表
#pragma onceenum TYPE{ HEAD_TYPE = 0, // 附加头节点 VALUE_TYPE = 1, // 存储值的节点 SUB_TYPE = 2, // 指向子表};class GeneralListNode{ friend class GeneralList;public: GeneralListNode(TYPE type = VAL原创 2016-09-05 14:29:41 · 275 阅读 · 0 评论 -
图Graph
#pragma once#include #include #include "Heap.hpp"#include "UnionFindSet.hpp"//// 临接矩阵表示无向图&有向图//templateclass GraphMatrix{public: GraphMatrix(const V* vertexs, int size, bool isDirected原创 2016-09-05 14:31:40 · 611 阅读 · 0 评论 -
堆heap
#pragma once#include #include using namespace std;template >class Heap{public: Heap() {} Heap(const T* array, size_t size) { assert(array); for (int i = 0; i< size; ++i) { _vec.原创 2016-09-05 14:32:44 · 381 阅读 · 0 评论 -
并查集
#pragma onceclass UnionFindSet{public: UnionFindSet(int size) :_size(size) { _parent = new int[_size]; //memset(_parent, -1, sizeof(int)*_size); for (int i = 0; i < _size; ++i) { _p原创 2016-09-05 14:34:24 · 358 阅读 · 0 评论 -
实现深拷贝的String
/***********************************************************************************xxx.h: Copyright , Inc.(2016), All rights reserved.Purpose: 实现String类的写时拷贝模型Author: MaJingCreated Time: 2原创 2016-09-06 16:37:06 · 496 阅读 · 0 评论