多站点wordpress简数采集器网站建设策划书的主要内容

news/2025/9/28 14:48:33/文章来源:
多站点wordpress简数采集器,网站建设策划书的主要内容,室内设计方案讲解思路,自己做短视频网站代码参考《妙趣横生的算法.C语言实现》 文章目录前言1、图的概念2、图的存储形式1、邻接矩阵#xff1a;2、邻接表3、代码定义邻接表3、图的创建4、深度优先搜索DFS5、广度优先搜索BFS6、实例分析前言 本章总结#xff1a;图的概念、图的存储形式、邻接表定义、图的创建、图…代码参考《妙趣横生的算法.C语言实现》 文章目录前言1、图的概念2、图的存储形式1、邻接矩阵2、邻接表3、代码定义邻接表3、图的创建4、深度优先搜索DFS5、广度优先搜索BFS6、实例分析前言 本章总结图的概念、图的存储形式、邻接表定义、图的创建、图的遍历(DFS、BFS)、 以及最后给出一个实例分析 1、图的概念 图是由顶点的非空有限集合V与边的集合E(顶点之间的关系)所构成。 图分为有向图和无向图。 2、图的存储形式 最常见的两种邻接矩阵、邻接表 1、邻接矩阵 利用两个数组来存储一个图。 第一个数组为一维数组用来存放图中的数据。vertex[0,1,…,n-1]:存储顶点信息 第二个数组为二维数组用来存储顶点的相互关系称为邻接矩阵。 A[i][j]{1,当顶点i与顶点j之间有边 0,当顶点i与顶点j之间没有边} 有向图有向图的邻接矩阵 通过简单的邻接矩阵就可以把一个复杂的图关系表现出来不过该方法不适合存储稀疏图(边数目少的图) 2、邻接表 邻接表由链表和顺序数组组成。链表用来存放边的信息数组用来存放顶点的数据信息。 每一个顶点分别建立一个链表。 每个链表前面设置一个头结点顶点域vertex用来存放顶点数据信息指针域next指向依附于顶点vertex的第一条边。 vertexnext 每一个链表中链表的每一个结点陈伟边结点表示依附于对应顶点的一条边。adjvex域存放该边的另一端顶点在顶点数组中的位置(数组下标)weight存放边的权重next指向下一条边结点若是最后一个边结点则指向NULL adjvexweightnext分别对应了头结点以及边结点有向图有向图的邻接表 3、代码定义邻接表 //邻接表定义 #define MAX_VERTEX_NUM 20 //指定图中顶点最大的个数为20 typedef struct ArcNode {//单链表中结点类型int adjvex; //该边指向顶点在顺序表中的位置(数组下标)struct ArcNode *next; //指向下一条边的指针infoType *weight; //边上的权重 }ArcNode;typedef struct VNode {//顶点类型VertexType data; //顶点中的数据信息为VertexType类型ArcNode *firstarc; //指向单链表即指向一条边 }VNode;VNode G[MAX_VERTEX_NUM]; //VNode类型的数组G它是图中顶点的存储容器。3、图的创建 图的创建就是创建一个基于邻接表存储的图结构。在此之前必须先设计好图的逻辑结构。 步骤 1、创建图的顶点也就是创建存储图中顶点的顺序表 2、创建顶点之间的边也就是创建单链表。 代码描述如下 1、首先向顶点中赋值。通过Getdata得到每个顶点中的数据并将它赋值到G[i].data中去。 每个顶点的firstarc域要初始化为NULL 2、然后创建顶点之间的边。创建时应该严格按照最开始所设计的图的逻辑结构进行边的输入。 创建边的过程与创建链表的过程类似。 当输入-1时表示该顶点依附的边创建完成 //图的创建 GreatGraph(int n,VNode G[]) {int i,e;ArcNode *p,*q;printf(输入顶点信息\n);for(i0;in;i){ Getdata(G[i]); //得到每条顶点中的数据 G[i].firstarcNULL; //初始化每一个顶点第一条边为空}for(i0;in;i){printf(创建第%d个顶点的边);scanf(%d,e); //输入边指向的顶点坐标while(e!-1){p(ArcNode *)malloc(sizeof(ArcNode)); //创建一条边p-next NULL; //链表结点next指向空p-adjvex e; //将该边指向顶点的信息赋值给adjvexif(G[i].firstarc NULL)G[i].firstarcp; //i结点的第一条边else q-next p;qp;scanf(%d,e);}} }//如果是创建上面提到过的有向图则 void main() {VNode G[3];CreatGpraph(3,G); }4、深度优先搜索DFS 图的遍历从图的某一顶点出发访遍图中其余顶点且使每个顶点只被访问一次。 图的遍历可用于 求解图的连通性问题拓扑排序求解最短路径求解关键路径 深度优先搜索的基本思路 从图中的某个顶点v出发访问该顶点v然后再一次从v的未被访问过的邻接点出发继续优先深度优先遍历该图直到图中与顶点v路径相通的顶点都被访问到为止。 由于一个图结构未必是连通的因此一次的深度优先搜索不一定可以遍历到图中所有的顶点若此时图中仍然有顶点未被访问 就另选图中的一个没有被访问到的顶点作为起始点继续深度优先搜索。 重复上述操作直到图中所有顶点都被访问到为止。 深度优先搜索是一个递归操作重复“访问顶点v再依次从v未被访问过的邻接点出发继续深度优先搜索” //代码描述 /* 深度优先搜索一个连通图 */ void DFS(VNode G[],int v) {int w;visit(v); //访问当前顶点visited[v] 1; //将顶点v对应的访问标记置1wFirstAdj(G,v); //找到顶点v的第一个邻接点如果无邻接点返回-1while(w!-1){if(visited[w]0) //如果该顶点未被访问{DFS(G,w); //递归地进行深度优先访问wNextAdj(G,v); //找到顶点v的下一个邻接点如果没有返回-1}} }//对图中G(V,E)进行深度优先搜索的主算法 void Travel_DFS(VNode G[],int visited[],int n) {int i;for(i0;in;i)visited[i]0; //将标记数组初始化为0for(i0;in;i)if(visited[i]0) //若有顶点未被访问从该顶点开始继续深度优先搜索DFS(G,i); }Travel_DFS 函数包含了3个参数 G[]表示存储图结构的容器这里可以理解为邻接表 visited[]为设置的方位标志数组用来标记图中被访问过的顶点 n表示图中的顶点个数。 将visited初始化为0因为一开始时图中的任何定点都没有被访问。 然后从第一个没有被访问的顶点开始调用递归函数DFS从该顶点开始深度优先遍历整个图 之所以不能仅仅通过一个递归函数DFS()来遍历整个图是因为DFS只能遍历到从起始顶点v开始所有与v相连通的图的顶点。 如果这个图不是连通的仅仅通过DFS是无法遍历完全的 可以举个例子来描述详细遍历过程 假设以V0为起点访问标志数组初始值为visited[5]{0,0,0,0,0}; {(1)访问顶点V0visited[5]1,0,0,0,0(2)用函数FirstAdj得到V0第一个邻接点如V1(3)如果不返回-1即有邻接点(3.1)访问顶点V1visited[5]1,1,0,0,0(3.2)用函数FirstAdj得到V1第一个邻接点V2(因为V0已经访问过了)(3.3)如果不返回-1即有邻接点(3.3.1)访问顶点V2visited[5]1,1,1,0,0(3.3.2)用函数FirstAdj得到V2第一个邻接点返回-1因为都被访问过了(3.4)用函数NextAdj()得到V1下一个邻接点返回-1因为都被访问过儿(4)用函数NextAdj()得到V0下一个邻接点返回-1因为都被访问过儿\begin{cases} (1) \text{访问顶点V0visited[5]{1,0,0,0,0}}\\ (2) \text{用函数FirstAdj得到V0第一个邻接点如V1}\\ (3) \text{如果不返回-1即有邻接点}\\ (3.1) \text{访问顶点V1visited[5]{1,1,0,0,0}}\\ (3.2) \text{用函数FirstAdj得到V1第一个邻接点V2(因为V0已经访问过了)}\\ (3.3) \text{如果不返回-1即有邻接点}\\ (3.3.1) \text{访问顶点V2visited[5]{1,1,1,0,0}}\\ (3.3.2) \text{用函数FirstAdj得到V2第一个邻接点返回-1因为都被访问过了}\\ (3.4) \text{用函数NextAdj()得到V1下一个邻接点返回-1因为都被访问过儿}\\ (4) \text{用函数NextAdj()得到V0下一个邻接点返回-1因为都被访问过儿}\\ \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​(1)(2)(3)(3.1)(3.2)(3.3)(3.3.1)(3.3.2)(3.4)(4)​访问顶点V0visited[5]1,0,0,0,0用函数FirstAdj得到V0第一个邻接点如V1如果不返回-1即有邻接点访问顶点V1visited[5]1,1,0,0,0用函数FirstAdj得到V1第一个邻接点V2(因为V0已经访问过了)如果不返回-1即有邻接点访问顶点V2visited[5]1,1,1,0,0用函数FirstAdj得到V2第一个邻接点返回-1因为都被访问过了用函数NextAdj()得到V1下一个邻接点返回-1因为都被访问过儿用函数NextAdj()得到V0下一个邻接点返回-1因为都被访问过儿​ 5、广度优先搜索BFS 广度优先搜索基本思路 从图中的指定顶点v出发先访问顶点v然后依次访问v的各个未被访问的邻接点然后从这些邻接点出发按照同样的原则依次访问它们未被访问的邻接点 如此循环直道图中所有与v相连通的邻接点都被访问。 若此时图中仍有顶点未被访问就另选图中的一个没有被访问到的顶点作为起始点继续广度优先搜索直道图中所有顶点都访问完为止。 深度优先特点从一个顶点深入下去深入到不能再深入下去为止再从另一个未被访问过的顶点深入下去。 广度优先特点:按层次遍历的方法即先访问离顶点v0最近的顶点v1,v2,v3…再逐一访问离v1 v2 v3 …最近的顶点 算法思路 【A】 1、访问顶点v 2、每访问到一个顶点。都将对应的访问标签置1 3、将一杯访问过的顶点v入队列 【B】 循环执行以下操作 1、从队列中取出队头元素(顶点v) 2、得到该顶点的第一个邻接点 3、如果该邻接点还没被访问、则访问并入队列访问标记置1 4、求顶点v的下一个邻接点如果存在邻接点则跳回步骤3如果不存在邻接点跳回到步骤1 循环执行上述操作直到队列取空为止。 一旦队列取空则表明最后访问到的顶点已经没有未访问到的邻接点了 代码描述 void BFS(VNode G[],int v) {int w;visit(v); //访问顶点vvisited[v]1; //将顶点v对应的访问标记置1EnQueue(q,v); //顶点v入队列while(!emptyQ(q)){DeQueue(q,v); //出队列元素由v返回w FirstAdj(G,v); //找到顶点v的第一个邻接点如果无邻接点返回-1while(w!-1){if(visited[w]0){visit(w);EnQueue(q,w); //顶点w入队列visited[w]1;}wNextAdj(G,v); //找到顶点v的下一个邻接点如果无邻接点返回-1}} }//对图G(V,E)进行广度优先搜索的主要算法 void Travel_BFS(VNode G[],int visited[],int n) {int i;for(i0;in;i){visited[0]0; //标记数组初始化为0}for(i0;in;i){if(visited[i]0) //如果顶点未被访问到从该顶点开始继续广度优先搜索BFS(G,i);} } /* BFS实现广度优先搜索一个连通的图参数G[]表示图的存储容器即邻接表 v表示广度优先遍历访问起点可以举个例子来描述详细遍历过程 1、visit(V0),visited[5]{1,0,0,0,0} queue: V0 2、QueOut(V0),Firstadj(V0)V1,visit(V1) queue: 3、visit(V1),visited[5]{1,1,0,0,0} queue: V1 4、NextAdj(V0)V2,visit(V2) queue: V1 5、visit(V2),visited[5]{1,1,1,0,0} queue: V1,V2 6、NextAdj(V0)-1 queue: V1,V2 7、QueOut(V1),Firstadj(V1)V3,visit(V3) queue: V2 8、visit(V3),visited[5]{1,1,1,1,0} queue: V2V3 9、NextAdj(V1)V4,visit(V4) queue: V2V3 10、visit(V4),visited[5]{1,1,1,1,1} queue: V2V3,V4 11、NextAdj(V1)-1 queue: V2V3,V4 12、QueOut(V2),Firstadj(V2)-1 queue: V3,V4 14、QueOut(V3),Firstadj(V3)-1 queue:V4 15、QueOut(V4),Firstadj(V4)-1 queue 此数据结构为二叉树结构所以广度优先搜索适用于对树结构的遍历因为树结构是标准的层次结构 注意我们这里的遍历是按照图中每个顶点之间的关系对一个图的各连通分量进行的遍历而不只是对图中的每个顶点进行访问那么简单。图的遍历可能带有其他操作如计算带权有向图边权之和记录有向图顶点访问轨迹记录两顶点之间的边权值问题都必须依赖图的遍历。 6、实例分析 这里实例化上面涉及到的两个函数FirstAdj()和NextAdj(); FirstAdj(): 功能返回顶点的第一个邻接点在数组G的下标如果该顶点无邻接点返回-1 //返回第一个邻接点在数组中的下标 int FirstAdj(VNode G[],int v) {if(G[v].firstarc!NULL) return (G[v].firstarc)-adjvex; //如过该结点有第一条边返回下标否则返回-1return -1; } NextAdj() 功能返回顶点的下一个邻接点在数组G的下标如果该顶点无邻接点或者该点所有邻接点都被访问过返回-1 //返回下一个邻接点在数组中的下标 int NextAdj(VNode G[],int v) {ArcNode *p;pG[v].firstarc;while(p!NULL){if(visited[p-adjvex]) pp-next; //如果已经访问过返回-1else return p-adjvex;}return -1; }用邻接表存储的形式创建一棵无向图并应用深度优先搜索方法遍历该图中的每个顶点 #include stdio.h #include stdlib.h #include malloc.h #include conio.h//邻接表定义 #define MAX_VERTEX_NUM 20 //指定图中顶点最大的个数为20 typedef int VertexType ; typedef struct ArcNode {//单链表中结点类型int adjvex; //该边指向顶点在顺序表中的位置(数组下标)struct ArcNode* next; //指向下一条边的指针//infoType* weight; //边上的权重 }ArcNode;typedef struct VNode {//顶点类型VertexType data; //顶点中的数据信息为VertexType类型ArcNode* firstarc; //指向单链表即指向一条边 }VNode;VNode G[MAX_VERTEX_NUM]; //VNode类型的数组G它是图中顶点的存储容器。 int visited[5] { 0,0,0,0,0 };//图的创建 void GreatGraph(int n, VNode G[]) {int i, e;ArcNode* p, * q;q NULL;printf(输入顶点信息\n);for (i 0;i n;i){scanf(%d, G[i].data); //得到每条顶点中的数据 G[i].firstarc NULL; //初始化每一个顶点第一条边为空}for (i 0;i n;i){printf(创建第%d个顶点的边\n,i);scanf(%d, e); //输入边指向的顶点坐标while (e ! -1){p (ArcNode*)malloc(sizeof(ArcNode)); //创建一条边p-next NULL; //链表结点next指向空p-adjvex e; //将该边指向顶点的信息赋值给adjvexif (G[i].firstarc NULL)G[i].firstarc p; //i结点的第一条边else{q-next p;}q p;scanf(%d, e);}} } //返回第一个邻接点在数组中的下标 int FirstAdj(VNode G[], int v) {if (G[v].firstarc ! NULL) return (G[v].firstarc)-adjvex; //如过该结点有第一条边返回下标否则返回-1return -1; }//返回下一个邻接点在数组中的下标 int NextAdj(VNode G[], int v) {ArcNode* p;p G[v].firstarc;while (p ! NULL){if (visited[p-adjvex]) p p-next; //如果已经访问过返回-1else return p-adjvex;}return -1; }void DFS(VNode G[], int v) {int w;printf(%d , G[v].data); //访问当前顶点打印出顶点额数据信息visited[v] 1; //将顶点v对应的访问标记置1w FirstAdj(G, v); //找到顶点v的第一个邻接点如果无邻接点返回-1while (w ! -1){if (visited[w] 0) //如果该顶点未被访问{DFS(G, w); //递归地进行深度优先访问}w NextAdj(G, v); //找到顶点v的下一个邻接点如果没有返回-1} }/* 1、首先向顶点中赋值。通过Getdata得到每个顶点中的数据并将它赋值到G[i].data中去。 每个顶点的firstarc域要初始化为NULL 2、然后创建顶点之间的边。创建时应该严格按照最开始所设计的图的逻辑结构进行边的输入。 创建边的过程与创建链表的过程类似。 当输入-1时表示该顶点依附的边创建完成 */ int main() {VNode G[5];GreatGraph(5, G);printf(DFS搜索\n );DFS(G, 0);_getche();return 0; }效果 放几个链接学习学习 https://blog.csdn.net/ledou2/article/details/81875743 https://blog.csdn.net/ledou2/article/details/81905831

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站搜索排名高怎么做湖州服装网站建设

文章目录 Matplotlib与可视化分析简单图形的绘制pylot的高级功能添加图例与注释 Matplotlib与可视化分析 我们之前对数据的处理与分析,其实最终还是要利用可视化工具进行更加直观的输出 我们开业通过 pip install matplotlib命令来安装对应的模块 简单图形的绘制…

大连网站制作.net外贸app网站开发

我们知道在网易博客可以用html时,是否把代码直接加入到摸板中,但是效果却不是很好。那是因为没有对代码进行很好的排列,现在我说一下用table来排列,可以很好的把特效显示出来。在html语法中table(即表格)是不可少的部分&#xff0…

静态网站如何建设市场推广专员

文章目录 前言一、进程,线程,程序 区分二、创建子进程三、创建多个进程1. 获取进程号2. 循环创建多个进程 四、进程工具。1. ps 查看当前进程.2. kill 进程终止. 总结 前言 在计算机科学中,进程(Process)、线程&#…

东南亚日本股票数据API对接文档

概述 本文档详细说明如何对接StockTV全球股票API中的日本股票数据。日本股票市场是全球重要金融市场之一,包含东京证券交易所(TSE)等多个交易所。 认证方式 所有API请求都需要在URL参数中包含API Key: key=您的API密…

企业网站建设规划微企申请网站

![在这里插入图片描述](https://img-blog.csdnimg.cn/d55799a22b724099930eb7fb67260a12.png 最后 保存就可以了

基于数据源连接,动态构造JPA上下文EntityManager

基于数据源连接,动态构造JPA上下文EntityManagerPosted on 2025-09-28 14:33 江城2211 阅读(0) 评论(0) 收藏 举报因产品存在支持多种数据库平台的需求,采用JPA方式可以有效屏蔽不同数据库的语法差异,尤其是分…

做社情网站犯法怎么办网络门店管理系统登录入口

首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件,点击logic-part,选择需要添加或删除的器件,这里的器件必须是PCB中已经有的器件,Refdes中输入添加或删除的器件标号,点击Add添加。 添加完成后就会显示在R1…

如何做视频播放网站我有域名怎么做网站

SQLAlchemy 的缓存机制主要涉及两个层面:会话(Session)缓存和查询缓存。这两种缓存机制对于提升应用性能和数据一致性都非常重要。下面详细解释这两种缓存机制: 1. 会话(Session)缓存 会话缓存是 SQLAlch…

Ansible + Docker 部署 MinIO 集群

Ansible + Docker 部署 MinIO 集群1. 准备工作 1.1 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构10.0.0.13 arc-pro-dc01my.registry.com 16 1 500GB CentOS 7.9.2009 x86_6410.0.0.16 arc-pro-dc04 …

​​万用表与电流探头测量电流信号的技术对比分析​​

万用表与电流探头在电流测量中各有优势:万用表适合小电流、精度高,但需断电;电流探头非接触、适合大电流和高频信号。在电子测量领域,电流测量是电路调试、性能评估和故障诊断的基础工作。万用表和电流探头作为两种…

flink运行时架构 - --

运行组件: 最核心的是管理者jobManager和实际干活的taskManager

WPF Canvas mark triangle, circle, and retangle, then save the whole canvas as jpg file

Install-Package Wpf.Prism; private void SaveAsJpgCommandExecuted(){var dpi=VisualTreeHelper.GetDpi(this);RenderTargetBitmap rtb=new RenderTargetBitmap((int)(cvs.ActualWidth*dpi.DpiScaleY), (int)(cvs.Ac…

网站开发毕业设计周志wordpress sae 主题

BP神经网络 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。总结(BP神经网络和深度学习在本质上有以下区别) 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。 BP神经网络(误差反…

北京牛鼻子网站建设公司m3u8插件 wordpress

重点: 1.程序项目做出来了,需要打包发布给用户。如何打包是关键。 2.采用InstallShield软件进行发布。 步骤一:创建一个依赖三方库配置环境的bat文件的项目。 (主要测试三方库打包 和如果有bat文件,需要先创建环境&…

自动遍历测试利器:开源工具AppCrawler 配置全解析

Appcrawler是一个基于自动遍历的App爬虫工具,支持Android和IOS,支持真机和模拟器。最大的特点是灵活性高,可通过配置来设定遍历的规则。 配置文件格式 执行参数与配置文件 capability设置:与appium完全一致 testca…

得帆云ETL全新版本升级驱动数据高效流转

在数字化浪潮持续深化的背景下,数据已成为企业核心战略资产,高效的数据处理与集成能力,更是企业在数据驱动时代构筑竞争优势的关键支撑。 得帆云基于对技术创新的持续深耕及客户业务需求的深度洞察,正式推出ETL系统…

集成微信的企业网站管理系统凌河建设网站

一、Hadoop 1.x 和 2.x 的区别 二、HDFS架构 1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件…

挖同行墙脚!有稳定供应商的客户怎么下手构建?

挖同行墙脚!有稳定供应商的客户怎么下手构建?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

兰州网站优化服务企业建立网站

闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。 闭包的形式主要有三种: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封…