- 浏览: 317719 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
huangyunbin:
swc.advance(); 这个什么时候被调用是最核心的 ...
滑动窗口计数java实现 -
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB 从入门到精通专题教程 -
rryymmoK:
深入浅出MongoDB应用实战开发下载地址:http://pa ...
MongoDB 从入门到精通专题教程 -
u012352249:
怎么支持多个窗口啊?
滑动窗口计数java实现 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB 从入门到精通专题教程
//快速排序 #include <iostream> using namespace std; #define N 10240 template< typename T > void sort( T* a, int n ){ if(n<=0) return; if(n==2) { if(a[1] < *a) swap(a[1],*a); return; } swap( *a,a[n>>1] ); T v = *a; T* left = a+1; T* right = a+n-1; while( left<right ){ while( left<right&&*left<v ) ++left; while( *right>v&&right>a ) --right; if( left<right ) swap(*left,*right ); } swap( *a, *right ); sort( a, right-a ); sort( right+1, n-1-(right-a) ); } int main() { int a[N]; for( int i=0; i<N; i++) a[i] = N-i; time_t t = time(NULL); sort(a,N); cout << "Time : " << time(NULL)-t << endl; for( int i=0; i<10; i++) cout << a[i] << ' ' ; cout << endl; }
//二叉树 #include <iostream> using namespace std; template< typename T > class BanaryTree{ private: struct Node{ T data; Node* left; Node* right; Node():data(T()),left(NULL),right(NULL){ } Node(const T& t):data(t),left(NULL),right(NULL){ } }; // the end of struct Node* root; public: BanaryTree():root(NULL){ } ~BanaryTree(){ clear(root); cout << "~BanaryTree()" << endl; } void push(const T& t ){ Node* p = new Node(t); insert(root, p ); } bool empty(){ return root==NULL; } void travel(){ show(root); cout << endl; } int size(){ return size(root); } bool find( const T& t ){ Node* p = new Node(t); return find(root, p)!=NULL; } void erase( const T& t ){ Node* p = new Node(t); Node*& q = find(root,p); if(!q) return; Node* r = q; insert( q->right, q->left ); q = q->right; delete r; } void update(const T& o, const T& n){ if( !find(o) ) return; erase(o); push(n); } private: Node*& find( Node*& tree,Node*& p ){ if(!tree) return tree; else if(!p) return p; else if( tree->data == p->data ) return tree; else if(p->data < tree->data ) return find( tree->left, p); else return find( tree->right, p); } int size( Node* tree ){ if(!tree) return 0; return size(tree->left) + size(tree->right) + 1; } void show(const Node* tree){ if(!tree) return; show(tree->left); cout << tree->data << ' '; show(tree->right); } void insert( Node*& tree,Node* p){ if(!tree) tree = p; else if(p->data<tree->data) insert(tree->left,p); else insert(tree->right, p); } void clear(Node*& tree){ if( empty() ) return; if( !tree ) return; clear( tree->left ); clear( tree->right ); delete tree; tree = NULL; } }; //the end of class int main() { BanaryTree<int> bi; for(int i=0; i<10; i++) bi.push(10-i); bi.travel(); cout << "size() : " << bi.size() << endl; cout << "find(5) : " << bi.find(5) << endl; cout << "find(100) : " << bi.find(100) << endl; bi.erase(6); bi.travel(); bi.erase(50); bi.travel(); bi.update(10,11); bi.travel(); bi.update(10,11); bi.travel(); }
发表评论
-
UC++之目录和文件操作
2009-06-05 11:55 1245* UC + 文件系统 - 目 ... -
快速排序完整示例
2009-06-01 21:04 1076#include <iostream> usin ... -
C++容器与迭代器
2009-06-01 17:55 1974* 容器的迭代器还有几种: + iterator:正常迭 ... -
c++排序算法与模板和STL
2009-05-31 13:32 1807* 冒泡排序 一轮比较所有相邻数据对,如果顺序不合适就交换, ... -
C++算法与二叉树的实现
2009-05-30 18:35 2483* 输出格式控制 + 成员函数:width fill pr ... -
c++链表 异常 内部类 输出格式控制
2009-05-29 21:36 1676C(控制台) F(文件) ------------- ... -
C++之I/O
2009-05-27 21:26 1855* 重载 + 拷贝构造函数A(const A& o ... -
C++拷贝构造函数与运算符重载
2009-05-26 20:32 2401拷贝构造函数与运算符的重载 * 多态 - 前堤:继承,虚函 ... -
C++多态与类型转换
2009-05-25 17:10 1842c++中字符串的处理,用string进行处理,实际上它是一个类 ... -
类的继承
2009-05-24 09:42 9781,如何定义,实现一个类 ... -
面向对象编程
2009-05-23 19:20 697//倒计时 #include <iostr ... -
C++ 面向对象
2009-05-23 15:40 925* 指针简单总结 //接受命令行参数的函数 int main ... -
C与C++中的time相关函数
2009-05-23 14:03 1293本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所 ... -
c++指针续
2009-05-23 11:16 960//常指针,或叫定指针:指 ... -
C++指针
2009-05-22 19:22 1157C++ 里有字符串类型string ,最大可支持1G,可用st ... -
数组本质
2009-05-21 18:52 1214数组是一片连续的内存空间,定义时一般指明大小和类型,这样编译器 ... -
C++用递归解决汉诺塔问题(续)
2009-05-19 12:16 914#include <iostream.h> ... -
c++ 递归实例二
2009-05-18 22:37 1646#include <iostream.h> ... -
C++用递归解决汉诺塔问题
2009-05-18 21:54 2538递归确实是一个不错的算法,可以将原来很复杂的问题简化.这里要注 ... -
C++ 入门
2009-05-15 21:31 0一次性修改LINUX环境变量:(bash)export $PA ...
相关推荐
很好很强大的程序,实现二叉树的增删改查等基本操作,操作简单,程序结构清晰
排序二叉树 AVL树 哈夫曼树增删改查Java实现
自己实现的二叉排序树的增删改查,暂时未发现bug...
本资源是以C++写的二叉树代码,实现删除、插入、查询、取值。以及前序遍历、中序遍历、后序遍历、层序遍历等。运用了C++的模板template ,以泛型编程的原则写的,泛型编程指编写完全一般化并可重复使用的算法,其...
PHP实现二叉树图
包括了二叉树的各种递归与非递归的遍历算法 还可对二叉树所有结点求和
二叉树操作C++实现 二叉树操作C++实现 二叉树操作C++实现 二叉树操作C++实现 二叉树操作C++实现
C++ 实现二叉树@#¥……&(())
C++ 二叉树 C++ 二叉树 C++ 二叉树 C++ 二叉树
用c++实现二叉树的查找功能,利用外部文本输入并查找
这是一个链表的增删改查的实现小程序,是虚席结构体的基本,希望对一些人会有用!
利用C++实现二叉树的建立。首先通过建立节点类,然后通过递归算法来建立整个二叉树。在这个过程中,我们可以学习到如何增加节点、删除节点以及查找节点等算法。这些算法对于初学者来说非常有益,能够帮助我们初步...
初步了解二叉树的结构,掌握二叉树的定义和遍历
我自己写的C++课设程序,二叉树类模版。 自认为是初学者的“杰作”。 包含二叉树的常用操作:前中后层遍历算法。
C++实现异质二叉树的查找、插入、删除和遍历操作。
不用你再改正了,这是一个下载解压后可以直接执行的程序,省去了你改来改去的麻烦,实现二叉树的基本操作,包括建树、前序遍历、中序遍历、后序遍历、删除、求节点数、高度等等操作。
用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法
C++实现二叉搜索树(BST),通过控制台能够实现增删改查,同时还能求树的高度,其中树的增加,删除等都是采用递归的方式生成的
C++经典算法 二叉树 包括遍历二叉树,线索二叉树和遍历线索二叉树。