- 博客(164)
- 资源 (1)
- 收藏
- 关注
原创 【查找】二分查找、插值查找、斐波那契查找
#include using namespace std; int binary_search(int* data, int n, int key){ int low, high, mid; low = 0; high = n-1; while (low <= high){ mid = low + (high - low) / 2; if (key < data[mid])
2016-05-29 19:33:09 606
原创 【排序】桶排序
#include using namespace std; typedef struct node{ int key; struct node* next; node(int k) :key(k), next(NULL){} }node; void bucket_sort(int nums[],int len,int bucket_size){ node** bucket_table
2016-05-14 14:00:56 433
原创 【排序】基数排序
#include using namespace std; //求数据的最大位数 int get_max_bit(int nums[], int len){ int count; int max = 1; int* temp = new int[len]; for (int i = 0; i < len; i++) temp[i] = nums[i]
2016-05-14 13:54:13 406
原创 【排序】快速排序
#include using namespace std; int pnumsrtition(int nums[], int low, int high){ int pivot_key = nums[low];//用区间的第1个记录作为基准 while (low < high){//从区间两端交替向中间扫描,直到low=high为止 while (low = pi
2016-05-14 13:49:08 380
原创 【排序】归并排序(递归和非递归版本)
#include using namespace std; void merge(int* a, int* temp, int begin, int middle, int end){ int i = begin; int j = middle + 1; int k = 0; while (i <= middle&&j <= end){//比较两个指针所指向的元素,选择相对小的元素放入到
2016-05-14 13:47:36 2414
原创 【排序】堆排序
MyHeap.h #ifndef MY_HEAP_H #define MY_HEAP_H #include #include #define max_value -99999999 //仿函数 template struct MyLess{ bool operator()(const T& x, const T& y) const { return x < y
2016-05-14 13:44:04 314
原创 【排序】冒泡排序、选择排序、插入排序、希尔排序
#include using namespace std; void swap(int* a, int* b){ int temp = *a; *a = *b; *b = temp; } void bubble_sort1(int nums[],int len){ for (int i = 0; i < len; i++){ for (int j = len - 1; j>i; j
2016-05-14 13:38:51 336
原创 【图】拓扑排序
#include #include #include using namespace std; class Hdu3342{ public: void initial(int n, int m); void read_case(); bool topological_sort(); void print_result(); private: vector vec[101];//节点的邻
2016-04-10 15:28:41 358
原创 【图】最短路径Bellman-Ford算法
#include using namespace std; const int max_num = 500; const int max_len = 10000; typedef struct Edge{ int begin;//起点 int end;//终点 int weight;//权值 }Edge; class BellmanFord{ public:
2016-04-04 22:39:47 738
原创 【图】最短路径Dijkstra算法和Floyd算法
一、Dijkstra算法 #include using namespace std; const int maxint = 10000; class Dij{ public: void initial(int m, int n); void read_case(); void dijkstra(int begin, int end); void search_path(int begi
2016-03-30 19:46:53 797
原创 【图】最小生成树Prim算法和Kruskal算法
一、Prim算法 #include using namespace std; const int max = 10000; class Hdu1233{ public: void initial(int n); void read_case(); void prim(); void print_result(); private: int path[101][101]; int d
2016-03-23 20:42:48 472
原创 【图】BFS和DFS
一、BFS #include #include using namespace std; const int max_num = 100; class BFS{ public: typedef int VertexType; typedef int EdgeType; BFS(); void create_graph(); void bfs_traverse(); private:
2016-03-15 20:18:15 350
原创 【图】邻接矩阵和邻接表
#include using namespace std; class AdjacencyMatrix{ public: typedef int VertexType; typedef int EdgeType; AdjacencyMatrix(); ~AdjacencyMatrix(); void create_graph(); void print_graph(); privat
2016-03-07 20:30:19 608
原创 【树】Trie树
#include #include using namespace std; //Trie树结点 struct TrieNode{ bool is_string;//标记该结点处是否构成单词 TrieNode* next[26]; TrieNode() :is_string(false){ for (int i = 0; i < 26; i++) next[i] = NULL;
2016-02-23 16:10:54 308
原创 【树】二叉排序树
BinarySortTree.h #ifndef BINARYSORTTREE_H #define BINARYSORTTREE_H #include //binary sort tree node struct binary_sort_tree_node{ int data; binary_sort_tree_node* lchild; binary_sort_tree_node* rc
2016-01-18 18:45:35 512
原创 【树】哈弗曼树和哈弗曼编码
#include #include using namespace std; const int max_size = 50; struct HuffmanNode{ int weight;//weight表示权值数据域 int parent;//par=0表明结点是独立的,par>0为它的双亲下标 int lchild, rchild;//lchild, rchild为左
2016-01-13 16:37:08 473
原创 【树】已知二叉树前序和中序遍历求后序遍历,及中序和后序遍历求前序遍历
#include using namespace std; //已知二叉树前序遍历和中序遍历,求后序遍历 void binary_tree_postorder(char* preorder,char* inorder,int length){ if (length == 0) return; char root = *preorder; int index = 0; for (; in
2016-01-11 13:30:00 767
原创 【树】二叉树的各种操作
BinaryTree.h #ifndef BINARYTREE_H #define BINARYTREE_H #include #include #include //binary tree node struct binary_tree_node{ char data; binary_tree_node* lchild; binary_tree_node* rchild; binar
2015-12-13 18:44:55 419
原创 【String】引用计数实现String
String.h #ifndef STRING_H #define STRING_H #define _CRT_SECURE_NO_WARNINGS #include //String class String{ public: String(const char* str = NULL);//constructor String(const String& rhs);//copy cons
2015-11-29 20:45:44 745 1
原创 【栈,队列】两队列实现栈
一、用STL的queue实现 MyStack.h #ifndef MYSTACK_H #define MYSTACK_H #include #include //MyStack template class MyStack{ public: typedef T value_type; typedef T& reference; MyStack();//constructor ~MyS
2015-11-21 15:17:25 452
原创 【栈,队列】两栈实现队列
一、用STL中的stack实现 MyQueue.h #ifndef MYQUEUE_H #define MYQUEUE_h #include #include //MyQueue template class MyQueue{ public: typedef T value_type; typedef T& reference; MyQueue();//constructor ~My
2015-11-15 14:00:12 326
原创 【栈】两栈共享空间
SeqDoubleStack.h #ifndef SEQDOUBLESTACK_H #define SEQDOUBLESTACK_H #include int default_size = 20; // SeqDoubleStack template class SeqDoubleStack{ public: typedef T& reference; SeqDoubleStack(int
2015-11-15 10:38:22 369
原创 【队列】链式队列
LinkedQueue.h #ifndef LINKEDQUEUE_H #define LINKEDQUEUE_h #include //queue node template struct queue_node{ typedef queue_node* pointer; T data; pointer next; queue_node() :next(NULL){} queue_n
2015-11-14 13:57:13 359
原创 【队列】循环队列
CircularQueue.h #ifndef CIRCULARQUEUE_H #define CIRCULARQUEUE_H int default_size = 10; #include //CircularQueue template class CircularQueue{ public: typedef T& reference; CircularQueue(int size
2015-11-14 10:36:38 330
原创 【栈】链式栈
LinkedStack.h #ifndef LINKEDSTACK_H #define LINKEDSTACK_H #include //Stack node template struct stack_node{ typedef stack_node* pointer; T data; pointer next; stack_node() :next(NULL){} stack_n
2015-11-11 21:48:46 314
原创 【栈】顺序栈
SeqStack.h #ifndef SEQSTACK_H #define SEQSTACK_H #include int default_size = 20; // SeqStack template class SeqStack{ public: typedef T& reference; SeqStack(int size = default_size);//constructor
2015-11-11 21:38:39 338
原创 【线性表】静态链表
StaticLinkedList.h #ifndef STATICLINKEDLIST_H #define STATICLINKEDLIST_H #include const int max_size = 1000; //list node template struct list_node{ T data; int cur;//cursor }; //StaticLinkedList
2015-11-08 20:52:32 374
原创 【线性表】双向循环链表
DualCirculationList.h #ifndef DUALCIRCULATIONLIST_H #define DUALCIRCULATIONLIST_H #include //list node template struct list_node{ typedef list_node* pointer; T data; pointer prior; p
2015-11-08 18:38:46 334
原创 【线性表】单链表
SingleLinkedList.h #ifndef SINGLELINKEDLIST_H #define SINGLELINKEDLIST_H #include //list node template struct list_node{ typedef list_node* pointer; T data; pointer next; list_node() :next(NULL)
2015-11-08 14:16:25 323
原创 【线性表】顺序表
SeqList.h #ifndef SEQLIST_H #define SEQLIST_H #include const int default_size = 100; //SeqList template class SeqList{ public: typedef T value_type; typedef T* pointer; SeqList(int size = defaul
2015-11-07 15:07:22 350
原创 【c++ templates读书笔记】【7】模板元编程
模板实例化机制是一种基本的递归语言机制,可以用于在编译期执行复杂的计算。这种随着模板实例化所出现的编译器计算通常被称为template metaprogramming。 例子一,计算阶乘: //Pow.h #ifndef POW_H #define POW_H template class Pow{ public: enum { result = M*Pow::result }; };
2015-10-16 15:33:00 375
原创 我的~/.vimrc设置
~/.vimrc设置 "-------------------------Basic Configuration Begin-------------------------" "Support Chinese when logging in by ssh set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termenco
2015-10-10 21:24:27 776
原创 【c++ templates读书笔记】【6】模板的多态
C++中的多态分为动多态和静多态。 动多态是通过继承和虚函数来实现的,这两个机制都是在运行期进行处理的。平常所谈论的C++多态指的就是这种动多态。 模板也允许使用单一的泛型标记来关联不同的特定行为,这种借助于模板的关联是在编译器进行处理的,因此把这种多态称为静多态。 一、动多态 动多态的设计思想主要在于:对于几个相关对象的类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功
2015-10-08 18:32:41 348
转载 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
转自http://blog.csdn.net/bokee/article/details/6633193 工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。。。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚至打算收回刚刚迈出的脚步。所幸的
2015-10-05 20:57:21 376
转载 手把手教你把Vim改装成一个IDE编程环境(图文)
手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage: http://blog.csdn.net/wooin Copyright: 该文章版权由吴垠和他可爱的老婆小包子所有
2015-10-05 20:50:09 411
原创 【c++ templates读书笔记】【5】模板实战
1、模板声明和模板定义如果不在同一个文件中,在另一个文件中使用模板时会出现链接错误。 例子: //Myfirst.h #ifndef MYFIRST_H #define MYFIRST_H #include #include using namespace std; template void print_typeof(T const& x); #endif //Myfirst.cpp
2015-09-30 17:03:46 340
原创 【c++ templates读书笔记】【4】技巧性基础知识
1、关键字typename 引入关键字typename是为了说明:模板内部的标识符可以是一个类型。当某个依赖与模板参数的名称是一个类型时,就应该使用typename。 template class MyClass{ typename T::SubType * ptr; // typename说明SubType是定义于T内的一种类型,如果不使用typename,SubType会被认为是T的一
2015-09-27 13:36:54 581
原创 【c++ templates读书笔记】【3】非类型模板参数
对于函数模板和类模板,模板参数并不局限于类型,普通值也可以作为模板参数。但非类型模板参数是有限制的,只能是常整数(包括枚举值)或者指向外部链接对象的指针,浮点数、类对象和内部链接对象不允许作为非类型模板参数的。 1、非类型类模板参数例子 #include using namespace std; //Maxsize是一个非类型模板参数 template class Stack{ private
2015-09-26 13:35:45 407
原创 【c++ templates读书笔记】【2】类模板
1、类模板的声明 template class Stack{ ... } 2、在类模板内部,T可以像其他任何类型一样,用于声明成员变量和成员函数。 template class Stack{ private: std::vector elemes; // 存储元素的容器 public: Stack(); // 构造函数 voi
2015-09-23 19:26:32 354
原创 【c++ templates读书笔记】【1】函数模板
1、定义函数模板: template inline T const& max (T const& a, T const& b){ return a < b ? b : a; } 解释:template表明了这是一个函数模板,指定了模板参数区域,typename表明了后面的参数是一个类型名, T是模板参数,它可以用来指定所有的类型,a和b是调用参数,位于模板函数名称后面,在一对()内进行声
2015-09-19 14:08:57 598
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人