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

英文网站域名注册开发一套小程序大概多少钱

英文网站域名注册,开发一套小程序大概多少钱,动漫设计培训机构排名,深圳外贸网站建设制作文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步#xff1a;按照二叉搜索树的方式插入新节点第二步#x… 文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步按照二叉搜索树的方式插入新节点第二步调整颜色维护红黑树的规则情况一新插入的节点的父亲节点颜色为黑情况二新插入的节点的父亲节点颜色为红且叔叔节点不为空且为红情况三新插入的节点的父亲节点颜色为红且叔叔节点为空或者为黑 emptysize中序遍历红黑树和AVL树的比较全部代码 红黑树的简单介绍 定义 红黑树是一种二叉搜索树但在每个结点上增加一个存储位表示结点的颜色只能是Red或Black。 通过对任何一条从根到空节点的路径上各个结点着色方式的限制 红黑树确保没有一条路径会比其他路径长出俩倍即最长路径的长度最多是最短路径长度的两倍这样的话就能保证红黑树是接近平衡的树 红黑树的特性 红黑树通过以下特性来保持树的平衡保证最长路径的长度最多是最短路径长度的两倍 节点颜色每个节点只能是红色或黑色。 根节点树的根节点是黑色。 红色规则如果一个节点是红色则它的两个子节点都是黑色也就是说一条路径不能有两个连续的红色节点。 黑色高度从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。 空节点所有的空节点NIL节点通常是叶子节点的子节点都是黑色。 为什么满足上面的特性红黑树就能保证最长路径的长度最多是最短路径长度的两倍呢 其实很好理解 因为 特性2根节点是黑的 特性4每条路径的黑色节点个数是相同的 特性5所有的空节点NIL节点通常是叶子节点的子节点都是黑色。 那么任何一个红黑树可能出现的最短路径就是只有黑色节点的路径因为每条路径的黑色节点个数是相同的 而任何一个红黑树可能出现的最长路径就是一黑一红交替的路径 为什么 因为 特性1每个节点只能是红色或黑色 特性3每一条路径都不可能出现连续的红色节点 特性4每条路径的黑色节点个数是相同的 所以最短路径和最长路径的黑色节点个数一样 所以最长也只能是黑红节点交替出现 因此 可能的最短的路径是全黑节点 可能的最长路径是一黑一红交替出现的路径红黑节点个数相同 所以 如果全黑节点的路径长度为h 那么一黑一红交替出现的路径长度最多只能是2*h 红黑树的应用 红黑树是一种高效的自平衡二叉搜索树因其出色的性能和良好的平衡特性在计算机科学中被广泛应用。以下是红黑树的一些主要应用场景 Java 和 C 中的集合和数据结构 在 Java 中红黑树被用于实现 TreeSet 和 TreeMap分别提供有序集合和有序映射的功能。在 C 中红黑树是 std::set、std::multiset、std::map 和 std::multimap 的底层数据结构。 数据库索引 红黑树常用于数据库系统中作为索引结构来提高数据查询和更新的效率。 通过维持数据的有序性和快速搜索特性红黑树能够有效地管理大量数据。 操作系统的内存管理 在操作系统中红黑树可用于管理内存分配。例如在 Linux 的虚拟内存管理中红黑树被用来维护页面分配的信息确保内存的高效使用。 文件系统和文件管理 在文件系统中红黑树可以用来存储文件元数据比如文件名、大小和修改时间等信息以便快速检索和排序。 网络协议和算法 在一些网络协议的实现中红黑树可以用来管理连接状态或路由表以实现高效的数据包转发和路由决策。 图形渲染和游戏开发 在图形渲染和游戏开发中红黑树可用于管理场景中的物体通过快速搜索和排序来优化渲染列表。 科学计算和数据分析 在科学计算和数据分析中红黑树可以用于管理大量的有序数据提供快速的搜索和更新操作这对于时间序列数据的处理尤为重要。 红黑树可以确保数据结构的稳定性和效率对于处理大量动态变化的数据集合尤为重要。 全部的实现代码放在了文章末尾 准备工作 创建两个文件一个头文件RBTree.hpp一个源文件test.cpp 【因为模板的声明和定义不能分处于不同的文件中所以把成员函数的声明和定义放在了同一个文件RBTree.hpp中】 RBTee.hpp存放包含的头文件命名空间的定义成员函数和命名空间中的函数的定义 test.cpp存放main函数以及测试代码 包含头文件 iostream用于输入输出cmath:提供数学函数 类的成员变量和红黑树节点的定义 红黑树类的成员变量只有一个就是指向红黑树的根节点的指针 红黑树的节点类 为什么红黑树新插入的节点【或者新节点】一定是红色的 其实就是维护成本的问题 1.如果新插入的节点为黑色 因为插入之前这棵树一定是红黑树 所以他的每一条路径上的黑色节点个数都相同 但是因为你新插入了一个黑色的这一条路径就会比其他路径多一个黑色节点为了保持红黑树的规则每一条路径上的黑色节点个数都相同 就得想办法让每一条路径也都增加一个黑色节点维护成本太高了 2.如果新插入的节点为红色 ① 新插入的节点的父亲为黑色就可以直接结束了因为满足红黑树的所有规则 ②就算新插入的节点的父亲为红色调整的情况也只有两种维护成本更低 构造函数和拷贝构造 构造函数没什么好说的默认构造就行了 RBTree() :_root(nullptr) {}拷贝构造 因为节点都是从堆区new出来的所以要深拷贝 使用递归实现深拷贝 因为拷贝构造不能有多余的参数但是递归函数又必须使用参数记录信息 然后在拷贝构造里面调用一下这个函数就行了 RBTree(const RBTree obj) {_root Copy(obj._root, nullptr); } swap和赋值运算符重载 交换两颗红黑树的本质就是交换两颗数的资源数据而它们的资源都是从堆区申请来的然后用指针指向这些资源 并不是把资源存储在了红黑树对象中 所以资源交换很简单直接交换_root指针的指向即可 void Swap(RBTree obj) {std::swap(_root, obj._root); }赋值运算符重载 RBTree operator(RBTree obj) {this-Swap(obj);return *this; }为什么上面的两句代码就可以完成深拷贝呢 这是因为 使用了传值传参会在传参之前调用拷贝构造再把拷贝构造出的临时对象作为参数传递进去 赋值运算符的左操作数*this再与传入的临时对象obj交换就直接完成了拷贝 在函数结束之后存储在栈区的obj再函数结束之后obj生命周期结束 obj调用析构函数把指向的从*this那里交换来的不需要的空间销毁 析构函数 使用递归遍历把所有从堆区申请的节点都释放掉 因为析构函数不能有多余的参数但是递归函数又必须使用参数记录信息 所以再封装一个成员函数专门用来递归释放 然后在拷贝构造里面调用一下这个函数就行了 ~RBTree() {Destroy(_root);_root nullptr; }find 具体流程 从根节点开始将目标值传入的key与当前节点的key进行比较。 如果目标值小于当前节点值则在左子树中继续查找 如果目标值大于当前节点值则在右子树中继续查找。 这个过程一直进行直到找到与目标值或者到达空节点为止。 把上述过程转成代码 insert【重要】 红黑树就是在二叉搜索树的基础上节点有了颜色因此红黑树也可以看成是二叉搜索树。 那么AVL树的插入过程可以分为两步 先按照二叉搜索树的方式插入新节点 再调整颜色维护红黑树的规则 第一步按照二叉搜索树的方式插入新节点 插入的具体过程如下 树为空则直接新增节点赋值给二叉搜索树的成员变量_root指针 树不空则按照查找find的逻辑找到新节点应该插入的位置 树不空如果树中已经有了一个节点的key值与要插入的节点的key相同就插入失败 这个过程一直进行直到找到与传入的key相等的节点或者到达空节点为止。 把上述过程转成代码 第二步调整颜色维护红黑树的规则 颜色调整分以下3种情况 新插入的节点cur的父亲节点parent颜色为黑新插入的节点cur的父亲节点parent颜色为红且叔叔uncle节点不为空且为红新插入的节点cur的父亲节点parent颜色为红且叔叔uncle节点为空或者为黑 情况一新插入的节点的父亲节点颜色为黑 此时插入节点并没有违反任何红黑树规则所以不需要调整颜色/树的结构 直接结束插入就行 情况二新插入的节点的父亲节点颜色为红且叔叔节点不为空且为红 cur为新插入的节点g是爷爷节点u是父亲的兄弟节点abcde是都是符合条件的红黑树 cur的位置是不固定的 cur也可以是上图的cde cur的pgu相应的改变即可 最主要看的是cur和它的gpu的颜色是否满足情况一 因为插入的节点的颜色为红色而且它的父亲节点也是红色 那么它就违反了红黑树的第3条规则同一路径不能出现连续的红色节点 所以必须进行调整。 因为叔叔节点不为空且为红所以没有严重违反红黑树的规则只需要对颜色进行调整即可 所以调整方案是 ①把pu都变黑把g变红这样就能让连续的红色节点去除但是g爷爷接节点变成红色了g的父亲节点也可能是红色 所以需要 ②再把g看作cur继续循环向上调整再根据新的c,p,u,g节点的颜色判断是情况一情况二还是情况三 具体实现代码 情况三新插入的节点的父亲节点颜色为红且叔叔节点为空或者为黑 【此时cur的位置也是不固定的 cur也可以是上图的cde cur的pgu相应的改变即可 最主要看的是cur和它的gpu的颜色是否满足情况二】 因为插入的节点的颜色为红色而且它的父亲节点也是红色 那么它就违反了红黑树的第3条规则同一路径不能出现连续的红色节点 所以必须进行调整。 因为叔叔uncle节点为空或者为黑所以严重违反红黑树的规则需要调整红黑树的部分结构和调整颜色 所以此时的调整方案是 先旋转[根据curp和g的相对位置进行左旋右旋双旋]再变颜色 【如果不知道旋转是什么的话可以看我这篇文章平衡二叉搜索树之 AVL 树的模拟实现【C】中的怎么旋转】 ①单旋p变黑g变红 因为单旋之后 p就变成了cpg及其子树组成的这棵树的根节点 然后又因为g是黑色所以他旋转下去的话 那么c那条路径就会比其他路径少一个黑色节点 所以需要把作为新的根节点的p变黑这样c那条路径的黑色节点数量才会与其他路径上的相同 但是这样又会让g那条路径比其他的路径多一个黑色节点 所以再把g变红 ②双旋c变黑g变红 因为单旋之后 c就变成了cpg及其子树组成的这棵树的根节点 然后的推导就与单旋的类似了 具体代码实现 empty bool Empty() {如果_root为空那么树就是空的return _root nullptr; }size 使用递归实现二叉搜索树的节点个数统计 因为我们经常使用的stl的容器的size都是没有参数的但是递归函数又必须使用参数记录信息 所以再封装一个成员函数专门用来递归 然后再size里面调用一下就行了 size_t Size() {return _Size(_root); }中序遍历 中序遍历的递归函数 然后再调用递归函数 void InOrder() {_InOrder(_root); }红黑树和AVL树的比较 红黑树和AVL树都是高效的平衡二叉树增删改查的时间复杂度都是O( l o g 2 N log_2 N log2​N) 红黑树不追求绝对平衡其只需保证最长路径不超过最短路径的2倍相对而言减少了旋转的次数 所以在经常进行增删的结构中性能比AVL树更优而且红黑树实现比较简单 所以实际运用中红黑树更多 全部代码 #define _CRT_SECURE_NO_WARNINGS#includeiostream #includecmath using namespace std;//定义枚举枚举节点的颜色 enum Color {RED,//红色BLACK//黑色 };templateclass T struct RBTreeNode {T _data;//节点中存储的数据RBTreeNode* _parent;//指向节点的父亲节点RBTreeNode* _left;//指向节点的左孩子RBTreeNode* _right;//指向节点的右孩子Color _color;//存储节点的颜色//默认构造RBTreeNode(const T data T()):_data(data),_parent(nullptr),_left(nullptr),_right(nullptr),_color(RED)//新节点的颜色默认是红色{} };//模板参数T就是节点中存储的数据的类型 templateclass T class RBTree {//给节点类重命名typedef RBTreeNodeT Node; private://指向红黑树的根节点的指针Node* _root nullptr;public:RBTree():_root(nullptr){}RBTree(const RBTree obj){_root Copy(obj._root, nullptr);}RBTree operator(RBTree obj){this-Swap(obj);return *this;}~RBTree(){Destroy(_root);_root nullptr;}void Swap(RBTree obj){std::swap(_root, obj._root);}bool Insert(const T data){Node* newnode new Node(data);if (_root nullptr){_root newnode;_root-_color BLACK;return true;}Node* cur _root;Node* parent nullptr;while (cur){if (cur-_data data){parent cur;cur cur-_right;}else if (cur-_data data){parent cur;cur cur-_left;}else{return false;}}if (parent-_data data){parent-_left newnode;}else{parent-_right newnode;}newnode-_parent parent;cur newnode;//如果新插入的节点的父节点的颜色是 黑色// 因为已经符合红黑树的规则了直接结束插入if (parent-_color BLACK)return true;//直接结束else//否则{Node* grandpa parent-_parent;//爷爷节点Node* uncle nullptr;//叔叔节点即cur的父亲节点的 兄弟节点if (parent grandpa-_left)//如果parent是左孩子{uncle grandpa-_right;//那么它的兄弟节点就是右孩子}else//如果parent是右孩子{uncle grandpa-_left;//那么它的兄弟节点就是左孩子}//情况二// cur的父亲节点parent为红且叔叔uncle节点不为空且为红//只需要继续 循环 向上调整while (parent-_color RED uncle uncle-_color RED){//调整颜色grandpa-_color RED;parent-_color BLACK;uncle-_color BLACK;//如果调整到根节点就不需要再向上调整了if (grandpa _root){//因为根节点只能是黑色//所以把爷爷节点grandpa的颜色调成黑色grandpa-_color BLACK;return true;//直接结束}//重新赋值//继续向上调整cur grandpa;//让原来的爷爷节点作为curparent cur-_parent;//重新得出新的父亲节点//如果新的父亲节点为黑就和刚插入节点时一样// 因为已经符合红黑树的规则了直接结束插入if (parent-_color BLACK)return true;//直接结束grandpa parent-_parent;//重新得出新的爷爷节点//重新得出新的叔叔节点if (parent grandpa-_left){uncle grandpa-_right;}else{uncle grandpa-_left;}}//情况三// cur的父亲节点parent为红且叔叔uncle节点为空或者为黑//就只能根据情况旋转处理一次if (parent-_color REDuncle nullptr || uncle-_color BLACK){if (parent grandpa-_right cur parent-_right)//左单旋{RotateL(grandpa);//调整颜色parent-_color BLACK;grandpa-_color RED;}else if (parent grandpa-_left cur parent-_left)//右单旋{RotateR(grandpa);//调整颜色parent-_color BLACK;grandpa-_color RED;}else if (parent grandpa-_left cur parent-_right)//左右双旋{RotateL(parent);RotateR(grandpa);//调整颜色cur-_color BLACK;grandpa-_color RED;}else if (parent grandpa-_right cur parent-_left)//右左双旋{RotateR(parent);RotateL(grandpa);//调整颜色cur-_color BLACK;grandpa-_color RED;}}}return true;}Node* Find(const T data){Node* cur _root;while (cur){if (cur-_data data){cur cur-_right;}else if (cur-_data data){cur cur-_left;}else{return cur;}}return nullptr;}void InOrder(){_InOrder(_root);cout endl;}bool Empty(){return _root nullptr;}size_t Size(){return _Size(_root);}size_t Height(){return _Height(_root);}bool IsRBTree(){if (_root nullptr)return true;if (_root-_color ! BLACK)return false;int count 0;Node* cur _root;while (cur){if (cur-_color BLACK)count;cur cur-_left;}return _IsRBTree(_root, count, 0);} private:bool _IsRBTree(const Node* root, const int total, int count){if (root nullptr){if (count ! total)return false;elsereturn true;}if (root-_color RED root-_parent-_color RED)return false;if (root-_color BLACK)count;if (_IsRBTree(root-_left, total, count) false)return false;if (_IsRBTree(root-_right, total, count) false)return false;return true;}size_t _Height(Node* root){if (root nullptr)return 0;int left _Height(root-_left);int right _Height(root-_right);return left right ? left 1 : right 1;}// 左单旋void RotateL(Node* parent){//记录一下PR和PRLNode* PR parent-_right;Node* PRL PR-_left;//把PRL链接在parent的右边parent-_right PRL;//因为PRL可能为空为了防止空指针访问必须判断一下if (PRL ! nullptr){//PRL不为空就把它的父亲节点变成parentPRL-_parent parent;}//把parent链接在PR的左边PR-_left parent;//更改PR的父亲节点PR-_parent parent-_parent;//只有AVL树的根节点的父亲节点为空//所以parent是根节点if (parent-_parent nullptr){//PR变成了这颗子树的根替代了原来parent的位置//所以得把AVL树的根节点更新一下_root PR;}else//如果parent不是根节点{//PR还是要带替parent的位置//所以parent在父亲的左PR就在左//parent在父亲的右PR就在右if (parent parent-_parent-_left)parent-_parent-_left PR;elseparent-_parent-_right PR;}//更新一下parent的父亲节点parent-_parent PR;}// 右单旋void RotateR(Node* parent){//记录一下PL和PLRNode* PL parent-_left;Node* PLR PL-_right;//把PLR链接在parent的右边parent-_left PLR;//因为PLR可能为空为了防止空指针访问必须判断一下if (PLR ! nullptr){//不为空就把它的父亲节点变成parentPLR-_parent parent;}//把parent链接在PL的左边PL-_right parent;//更新PL的父亲节点PL-_parent parent-_parent;//只有AVL树的根节点的父亲节点为空//所以parent是根节点if (parent-_parent nullptr){//PL变成了这颗子树的根替代了原来parent的位置//所以得把AVL树的根节点更新一下_root PL;}else//如果parent不是根节点{//PL还是要带替parent的位置//所以parent在父亲的左PL就在左//parent在父亲的右PL就在右if (parent parent-_parent-_left)parent-_parent-_left PL;elseparent-_parent-_right PL;}//更新一下parent的父亲节点parent-_parent PL;}//因为无法直接获取到父亲节点的地址//所以需要传参传进来Node* Copy(Node* root, Node* parent){//空节点不需要拷贝直接返回nullptrif (root nullptr)return nullptr;//从堆区申请空间并初始化节点Node* newnode new Node(root-_data);//连接上传入函数的父亲节点newnode-_parent parent;//拷贝颜色newnode-_color root-_color;//递归拷贝左右子树newnode-_left Copy(root-_left, newnode);newnode-_right Copy(root-_right, newnode);return newnode;//返回新节点}//使用后序遍历进行释放void Destroy(Node* root){//空节点if (root nullptr)return;Destroy(root-_left);Destroy(root-_right);delete root;}void _InOrder(Node* root){if (root nullptr)return;_InOrder(root-_left);cout root-_data ;_InOrder(root-_right);}size_t _Size(Node* root){if (root nullptr)return 0;int left _Size(root-_left);int right _Size(root-_right);return left right 1;} };
文章转载自:
http://www.morning.znmwb.cn.gov.cn.znmwb.cn
http://www.morning.nchsz.cn.gov.cn.nchsz.cn
http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn
http://www.morning.jcfqg.cn.gov.cn.jcfqg.cn
http://www.morning.wklhn.cn.gov.cn.wklhn.cn
http://www.morning.bpttm.cn.gov.cn.bpttm.cn
http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn
http://www.morning.djxnn.cn.gov.cn.djxnn.cn
http://www.morning.dqdss.cn.gov.cn.dqdss.cn
http://www.morning.wplbs.cn.gov.cn.wplbs.cn
http://www.morning.pngfx.cn.gov.cn.pngfx.cn
http://www.morning.baguiwei.com.gov.cn.baguiwei.com
http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn
http://www.morning.cwskn.cn.gov.cn.cwskn.cn
http://www.morning.rrwft.cn.gov.cn.rrwft.cn
http://www.morning.wbqk.cn.gov.cn.wbqk.cn
http://www.morning.yqkmd.cn.gov.cn.yqkmd.cn
http://www.morning.lpskm.cn.gov.cn.lpskm.cn
http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn
http://www.morning.fzqfb.cn.gov.cn.fzqfb.cn
http://www.morning.blznh.cn.gov.cn.blznh.cn
http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn
http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn
http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn
http://www.morning.trsmb.cn.gov.cn.trsmb.cn
http://www.morning.nqgds.cn.gov.cn.nqgds.cn
http://www.morning.qrwjb.cn.gov.cn.qrwjb.cn
http://www.morning.synkr.cn.gov.cn.synkr.cn
http://www.morning.dbddm.cn.gov.cn.dbddm.cn
http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn
http://www.morning.pdghl.cn.gov.cn.pdghl.cn
http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn
http://www.morning.rxyz.cn.gov.cn.rxyz.cn
http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn
http://www.morning.jbnss.cn.gov.cn.jbnss.cn
http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn
http://www.morning.hxcuvg.cn.gov.cn.hxcuvg.cn
http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn
http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn
http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.jltmb.cn.gov.cn.jltmb.cn
http://www.morning.sbrrf.cn.gov.cn.sbrrf.cn
http://www.morning.liyixun.com.gov.cn.liyixun.com
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn
http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn
http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn
http://www.morning.hphrz.cn.gov.cn.hphrz.cn
http://www.morning.wwwghs.com.gov.cn.wwwghs.com
http://www.morning.plchy.cn.gov.cn.plchy.cn
http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn
http://www.morning.ptysj.cn.gov.cn.ptysj.cn
http://www.morning.duqianw.com.gov.cn.duqianw.com
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.jpkk.cn.gov.cn.jpkk.cn
http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn
http://www.morning.qtqk.cn.gov.cn.qtqk.cn
http://www.morning.tnwwl.cn.gov.cn.tnwwl.cn
http://www.morning.qgfy.cn.gov.cn.qgfy.cn
http://www.morning.trkhx.cn.gov.cn.trkhx.cn
http://www.morning.mttck.cn.gov.cn.mttck.cn
http://www.morning.mngh.cn.gov.cn.mngh.cn
http://www.morning.c7627.cn.gov.cn.c7627.cn
http://www.morning.yhljc.cn.gov.cn.yhljc.cn
http://www.morning.rykmz.cn.gov.cn.rykmz.cn
http://www.morning.rqwmt.cn.gov.cn.rqwmt.cn
http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn
http://www.morning.dxhdn.cn.gov.cn.dxhdn.cn
http://www.morning.rxnl.cn.gov.cn.rxnl.cn
http://www.morning.mdmxf.cn.gov.cn.mdmxf.cn
http://www.morning.mflqd.cn.gov.cn.mflqd.cn
http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn
http://www.morning.dplmq.cn.gov.cn.dplmq.cn
http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn
http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn
http://www.morning.sfwcb.cn.gov.cn.sfwcb.cn
http://www.morning.krtky.cn.gov.cn.krtky.cn
http://www.morning.kmwsz.cn.gov.cn.kmwsz.cn
http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn
http://www.tj-hxxt.cn/news/268106.html

相关文章:

  • 北京网站建设有哪些苍南住房和城乡规划建设局网站
  • 有哪些好用的设计网站有哪些内容河南省网站备案
  • 2_试列出网站开发建设的步骤岳麓区专业的建设网站公司
  • 网站 建设运行情况报告单位网站建设情况总结
  • 做棋牌网站要什么源码微信推广图片
  • 哪些网站适合瀑布流wordpress修改底部版权
  • 随州网站设计开发制作wordpress 调试php代码
  • 网站建设虍金手指花总网站推广策划方案大数据
  • 南宁建站公司有哪些商务网站建设的一般流程图
  • 青岛做网站seo电商沙盘seo裤子关键词
  • 深圳企业推广网站排名网站优化 pdf
  • 模型外包网站wordpress 换首页
  • 网站域名类型广西省住房和城乡建设厅官方网站
  • 住房和城乡建设部网站干部学院看设计作品的网站软件
  • 网站目录架构老薛主机安装wordpress
  • 中国制造网建站那个网站有题做
  • 如何查询网站备案进度查询给公司做网站软件
  • 做网站用哪个软件网站建设需求填表
  • 网站建设 美词池州网站建设费用
  • 深圳外贸网页设计网站设计优化
  • 最全网站源码分享wordpress 插件 定时
  • 网站基建建设wordpress cdn 部署
  • 网站优化哪里好网站基础建设
  • 用tp框架怎么做网站python 安装wordpress
  • 上海专业建设网站制作wordpress 系统找不到指定的文件.
  • 做加油机公司网站工作室名字
  • 顺飞网站建设怎么样网站建设介绍怎么写
  • 怎么开网页游戏平台seo免费诊断电话
  • 商业网站开发的实训小结怎么写网站做301
  • 网站建设中页面设计示范校建设 成果网站