当前位置: 首页 > news >正文

asp新闻发布网站模板天津外贸建站公司

asp新闻发布网站模板,天津外贸建站公司,顺的网站建设多少钱,旅游最好的网站建设C树的实现 STL里面没有提供容器树的模板实现#xff0c;自已写一个#xff1a;Tree.h //tree.h 头文件 #include list #include algorithm using namespace std; struct TreeNode; //定义一个结构体原型 classTree; //定义一个类原型 classIterator; //定义一…  C树的实现 STL里面没有提供容器树的模板实现自已写一个Tree.h //tree.h 头文件 #include list #include algorithm using namespace std; struct TreeNode; //定义一个结构体原型 classTree; //定义一个类原型 classIterator; //定义一个类原型 typedef listTreeNode* List; //重命名一个节点链表 TreeNode* clone(TreeNode*,List,TreeNode*);//Clone复制函数 struct TreeNode{ int_data; //数据 TreeNode* _parent; //父节点 List_children; //子节点 TreeNode(int,TreeNode*); //构造函数 void SetParent(TreeNode); //设置父节点 void InsertChildren(TreeNode); //插入子节点 }; classTree{ public: //下面是构造器和运算符重载 Tree(); //默认构造函数 Tree(constTree); //复制构造函数 Tree(constint); //带参数构造函数 Tree(constint,constlistTree*);//带参数构造函数 ~Tree(); //析构函数 Tree operator(constTree); //符号运算符重载 bool operator(constTree); //符号运算符重载 bool operator!(constTree); //!符号运算符重载 //下面是成员函数 void Clear(); //清空 boolIsEmpty()const; //判断是否为空 intSize()const; //计算节点数目 intLeaves(); //计算叶子数 intRoot()const; //返回根元素 intHeight(); //计算树的高度 //下面是静态成员函数 static boolIsRoot(Iterator); //判断是否是根 static boolisLeaf(Iterator); //判断是否是叶子 static IteratorParent(Iterator); //返回其父节点 static intNumChildren(Iterator); //返回其子节点数目 //跌代器函数 Iteratorbegin(); //Tree Begin Iteratorend(); //Tree End friend classIterator; //Iterator SubClass private: listTreeNode* _nodes; //节点数组 listTreeNode*::iteratorLIt; //一个节点迭代器 intheight(TreeNode*); intlevel(TreeNode*,Iterator); }; //This is TreeSub Class Iterator classIterator{ private: Tree* _tree; //Tree data listTreeNode*::iterator_lit; //List Iterator public: Iterator(); //默认构造函数 Iterator(constIterator); //复制构造函数 Iterator(Tree*,TreeNode*); //构造函数 Iterator(Tree*,listTreeNode*::iterator);//构造函数 //运算符重载 void operator(constIterator); //赋值运算符重载 bool operator(constIterator); //关系运算符重载 bool operator!(constIterator); //关系运算符重载 Iterator operator(); //前缀运算符 Iterator operator(int); //后缀运算符 int operator*()const; //获得节点信息 bool operator!(); //赋值运算符重载 typedef listTreeNode*::iteratorList; friend classTree; };   Tree.cpp //tree.cpp 实现文件 #include Tree.h //***** 下面是对于TreeNode结构体的定义实现*****/// TreeNode::TreeNode(inttype 0,TreeNode* Parent 0){ _data type; _parent Parent; } void TreeNode::SetParent(TreeNode node){ _parent node; } void TreeNode::InsertChildren(TreeNode node){ TreeNode* p node; _children.push_back(p); } //***** 下面是对于Tree类的定义实现*****/// Tree::Tree(){ } Tree::Tree(constinttype){ _nodes.push_back(new TreeNode(type)); } Tree::Tree(constTree t){ if(t._nodes.empty())return; clone(t._nodes.front(),_nodes,0); } Tree::Tree(constinttype,constlistTree* lit){ TreeNode* root new TreeNode(type);//建立根节点 _nodes.push_back(root);//放入树中 listTree*::const_iteratorit; for(it lit.begin();it!lit.end();it){ if(!((*it)-_nodes.empty())){//如果当前节点元素不为空 Tree* tp newTree(**it); TreeNode* p tp-_nodes.front(); root-_children.push_back(p); //设置根的子节点 p-_parent root; //设置节点的父节点为根 listTreeNode*::iteratorlit1 tp-_nodes.begin(); listTreeNode*::iteratorlit2 tp-_nodes.end(); listTreeNode*::iteratorlit3 _nodes.end(); _nodes.insert(lit3,lit1,lit2); } } } Tree::~Tree(){ for(listTreeNode*::iteratorit _nodes.begin();it!_nodes.end();it){ delete* it; } } Tree Tree::operator (constTree t){ Clear(); Tree* p newTree(t); _nodes p-_nodes; return *this; } boolTree::operator (constTree t){ if(_nodes.size()!t._nodes.size()){ return false; } listTreeNode*::iteratorit _nodes.begin(); listTreeNode*::const_iterator_it t._nodes.begin(); while(it!_nodes.end()_it!t._nodes.end()){ if((*it)-_data!(*_it)-_data){ return false; } it; _it; } return true; } boolTree::operator !(constTree t){ if(_nodes.size()!_nodes.size()){ return true; } else{ listTreeNode*::iteratorit _nodes.begin(); listTreeNode*::const_iterator_it t._nodes.begin(); while(it!_nodes.end()_it!t._nodes.end()){ if((*it)-_data!(*_it)-_data){ return true; } it; _it; } return false; } } void Tree::Clear(){ for(listTreeNode*::iteratorit _nodes.begin();it!_nodes.end();it){ delete* it; } _nodes.clear(); } boolTree::IsEmpty()const{ return _nodes.empty(); } intTree::Size()const{ return (int)_nodes.size(); } intTree::Leaves(){ inti 0; listTreeNode*::iteratorit _nodes.begin(); while(it!_nodes.end()){ if((*it)-_children.size()0){ i; } it; } return i; } intTree::Height(){ if(_nodes.size()!0){ TreeNode* TNode _nodes.front(); return height(TNode); } else{ return -1; //判断为空树 } } intTree::height(TreeNode* node){ if(!node){ return -1; } else{ listTreeNode* plist node-_children; if(plist.size()0){ return 0; } inthA 0; for(listTreeNode*::iteratorit plist.begin();it!plist.end();it){ inthB height(*it); if(hBhA){ hA hB; } } return hA1; } } IteratorTree::begin(){ return Iterator(this,_nodes.begin()); } IteratorTree::end(){ return Iterator(this,_nodes.end()); } intTree::Root()const{ return (*_nodes.begin())-_data; } boolTree::IsRoot(Iteratorit){ TreeNode p *it; if(p._parent 0){ return true; } return false; } boolTree::isLeaf(Iteratorit){ TreeNode p *it; if(p._children.size() 0){ return true; } return false; } IteratorTree::Parent(Iteratorit){ TreeNode p *it; Tree* t it._tree; IteratorIte(t,p._parent); return Ite; } intTree::NumChildren(Iteratorit){ TreeNode p *it; return (int)p._children.size(); } //***** 下面是对于Tree::Iterator类的定义实现*****/// Iterator::Iterator(){ } Iterator::Iterator(constIterator it){ _tree it._tree; _lit it._lit; } Iterator::Iterator(Tree* t, TreeNode* n){ _tree t; listTreeNode* nodes _tree-_nodes; _lit find(nodes.begin(),nodes.end(),n);//algorithm Members } Iterator::Iterator(Tree * t, listTreeNode*::iteratorlt){ _tree t; _lit lt; } void Iterator::operator (constIterator it){ _tree it._tree; _lit it._lit; } boolIterator::operator (constIterator it){ return _tree it._tree _lit it._lit; } boolIterator::operator !(constIterator it){ return _tree ! it._tree || _lit ! it._lit; } Iterator Iterator::operator (){ _lit; return *this; } IteratorIterator::operator (int){ Iteratorit(*this); _lit; return it; } intIterator::operator *() const{ return ((*_lit)-_data); } boolIterator::operator !(){ return _lit _tree-_nodes.end(); } //Clone函数 TreeNode* clone(TreeNode* node,List nodes,TreeNode* nodep){ TreeNode* cp new TreeNode(node-_data,nodep); nodes.push_back(cp); List l node-_children; List cl cp-_children; for(listTreeNode*::iteratorlt l.begin();lt!l.end();lt){ cl.push_back(clone(*lt,nodes,cp)); } return cp; }  转载于:https://www.cnblogs.com/xieyunc/archive/2009/04/30/2793611.html
http://wiki.neutronadmin.com/news/162540/

相关文章:

  • 网站怎么添加滤镜功能吗网站运营改进的点
  • 深圳网络做网站怎么用程序做网站
  • 湘潭网站建设公司23短视频平台
  • 网上书城 网站建设方案wordpress怎么念
  • 建设网站是做什么wordpress自动上传图片
  • 金融直播间网站建设wordpress菜单不显示
  • 上海网站建设免费推免费开店无押金的平台
  • 网站没有收录了潍坊专业网站建设多少钱
  • 葫芦岛手机网站建设英文介绍做美食视频网站
  • 深圳高端网站建设微机做网站的软件
  • 如今流行的网站建设万网制作淘宝客网站
  • 南京比较大的外贸公司有哪些南昌网站页面优化
  • 网站简历导出网站建设比较好的律所
  • 东莞市做阀门的网站公众号绑定网站
  • 做论坛和做网站有什么区别如何用ps做网站
  • 网站图片做伪静态品牌推广的意义
  • 纪检网站建设动态主题南京建设交易中心网站
  • 建立企业网站的目的如何在阿里云云服务器上搭建网站
  • 住建局网站信息化建设云浮罗定哪有做网站的
  • 驻马店360网站建设无锡大型互联网公司
  • 外贸网站建设要求Erphpdown wordpress
  • 建设银行网站电子支付在哪里重庆社区官网
  • 如何防止网站被攻击知识管理软件排名
  • 弄一个网站大连网站建设-网龙科技
  • 深圳html5网站建设微信软文
  • 简述网站开发的基本原则自己怎么做个网站
  • 普洱茶网站建设舞蹈培训机构网站模板
  • 金华网站制作价格wordpress 好的相册
  • 社交营销可以用于网站制作行业吗wordpress 文档 插件
  • 某网站注册需要邮箱是怎么弄以美食为主的网站栏目怎么做