怎么做一个设计师网站天津网站建设费用

张小明 2026/1/16 8:06:12
怎么做一个设计师网站,天津网站建设费用,个人设计师网站 青春,企业网站兰州建设费用图 一、图的基础概念与术语概念#xff1a;图是一种非线性数据结构#xff0c;由顶点和边组成#xff0c;相较于线性关系#xff08;链表#xff09;和分治关系#xff08;树#xff09;#xff0c;网络关系#xff08;图#xff09;的自由度更高#xff0c;因而更为…图一、图的基础概念与术语概念图是一种非线性数据结构由顶点和边组成相较于线性关系链表和分治关系树网络关系图的自由度更高因而更为复杂。常见类型是否有方向无向图与有向图在无向图中边表示两顶点之间的“双向”连接关系在有向图中边具有方向性即A→B和B→A两个方向的边是相互独立的所有顶点是否连通连通图和非连通图对于连通图从某个顶点出发可以到达其余任意顶点。对于非连通图从某个顶点出发至少有一个顶点无法到达。我们还可以为边添加“权重”变量从而得到有权图术语邻接当两顶点之间存在边相连时称这两顶点“邻接”。路径从顶点 A 到顶点 B 经过的边构成的序列被称为从 A 到 B 的“路径”。度一个顶点拥有的边数。对于有向图入度表示有多少条边指向该顶点出度表示有多少条边从该顶点指出。二、图的表示邻接矩阵设图的顶点数量为 邻接矩阵使用一个 大小的矩阵来表示图每一行列代表一个顶点矩阵元素代表边用0或1表示两个顶点之间是否存在边。邻接表邻接表adjacency list使用n个链表来表示图链表节点表示顶点。第i个链表对应顶点i其中存储了该顶点的所有邻接顶点与该顶点相连的顶点。三、图的基础操作基于邻接矩阵的实现/* 基于邻接矩阵实现的无向图类 */ class GraphAdjMat { vectorint vertices; vectorvectorint adjMat; public: /* 构造方法 */ GraphAdjMat(const vectorint vertices, const vectorvectorint edges) { // 添加顶点 for (int val : vertices) { addVertex(val); } // 添加边 for (const vectorint edge : edges) { addEdge(edge[0], edge[1]); } } /* 获取顶点数量 */ int size() const { return vertices.size(); } /* 添加顶点 */ void addVertex(int val) { int n size(); vertices.push_back(val); adjMat.emplace_back(vectorint(n, 0)); for (vectorint row : adjMat) { row.push_back(0); } } /* 删除顶点 */ void removeVertex(int index) { if (index size()) { throw out_of_range(顶点不存在); } vertices.erase(vertices.begin() index); adjMat.erase(adjMat.begin() index); for (vectorint row : adjMat) { row.erase(row.begin() index); } } /* 添加边 */ // 参数 i, j 对应 vertices 元素索引 void addEdge(int i, int j) { if (i 0 || j 0 || i size() || j size() || i j) { throw out_of_range(顶点不存在); } adjMat[i][j] 1; adjMat[j][i] 1; } /* 删除边 */ void removeEdge(int i, int j) { if (i 0 || j 0 || i size() || j size() || i j) { throw out_of_range(顶点不存在); } adjMat[i][j] 0; adjMat[j][i] 0; } /* 打印邻接矩阵 */ void print() { cout 顶点列表 ; printVector(vertices); cout 邻接矩阵 endl; printVectorMatrix(adjMat); } };基于邻接表的实现/* 基于邻接表实现的无向图类 */ class GraphAdjList { public: unordered_mapVertex *, vectorVertex * adjList; /* 在 vector 中删除指定节点 */ void remove(vectorVertex * vec, Vertex *vet) { for (int i 0; i vec.size(); i) { if (vec[i] vet) { vec.erase(vec.begin() i); break; } } } /* 构造方法 */ GraphAdjList(const vectorvectorVertex * edges) { for (const vectorVertex * edge : edges) { addVertex(edge[0]); addVertex(edge[1]); addEdge(edge[0], edge[1]); } } /* 获取顶点数量 */ int size() { return adjList.size(); } /* 添加边 */ void addEdge(Vertex *vet1, Vertex *vet2) { if (!adjList.count(vet1) || !adjList.count(vet2) || vet1 vet2) throw invalid_argument(不存在顶点); adjList[vet1].push_back(vet2); adjList[vet2].push_back(vet1); } /* 删除边 */ void removeEdge(Vertex *vet1, Vertex *vet2) { if (!adjList.count(vet1) || !adjList.count(vet2) || vet1 vet2) throw invalid_argument(不存在顶点); remove(adjList[vet1], vet2); remove(adjList[vet2], vet1); } /* 添加顶点 */ void addVertex(Vertex *vet) { if (adjList.count(vet)) return; adjList[vet] vectorVertex *(); } /* 删除顶点 */ void removeVertex(Vertex *vet) { if (!adjList.count(vet)) throw invalid_argument(不存在顶点); adjList.erase(vet); for (auto adj : adjList) { remove(adj.second, vet); } } /* 打印邻接表 */ void print() { cout 邻接表 endl; for (auto adj : adjList) { const auto key adj.first; const auto vec adj.second; cout key-val : ; printVector(vetsToVals(vec)); } } };四、图的遍历广度优先搜索广度优先遍历是一种由近及远的遍历方式从某个节点出发始终优先访问距离最近的顶点并一层层向外扩张代码实现vectorVertex * graphBFS(GraphAdjList graph, Vertex *startVet) { vectorVertex * res; unordered_setVertex * visited {startVet}; queueVertex * que; que.push(startVet); while (!que.empty()) { Vertex *vet que.front(); que.pop(); res.push_back(vet); for (auto adjVet : graph.adjList[vet]) { if (visited.count(adjVet)) continue; que.push(adjVet); visited.emplace(adjVet); } } return res; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站有死链怎么处理君哥摄影设计

Graphic:基于图形语法的Flutter数据可视化革命 【免费下载链接】graphic A grammar of data visualization and Flutter charting library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphic 在移动应用开发领域,数据可视化一直是个技术挑战…

张小明 2026/1/7 0:03:52 网站建设

佛山企业网站自助建站重庆网站建设重庆零臻科技价

一张 GIF 胜过千言万语:手把手教你用 Screen to Gif 高效表达 你有没有遇到过这种情况——在写文档时,明明一句话讲不清楚某个操作步骤,贴几张截图又显得零碎;发个视频吧,对方还得点播放、拖进度,麻烦不说…

张小明 2026/1/6 16:48:58 网站建设

php+mysql网站开发上海建网站开发公

《延迟执行技术与虚拟空调制解调器案例分析》 在软件开发和系统编程中,延迟执行是一个重要的概念,它允许程序在特定条件下暂停或安排任务的执行时间。本文将介绍几种常见的延迟执行方法,包括内核事件处理程序、回调、任务队列等,并通过虚拟空调制解调器驱动程序的案例来展…

张小明 2026/1/10 0:00:41 网站建设

做网站的公司盐城删除wordpress用户组

Excalidraw实战案例:快速绘制系统架构与数据流图 在一次跨部门的技术评审会上,团队花了近半小时才让产品经理理解后端服务间的调用链路——不是因为逻辑复杂,而是那张从Visio导出的规整架构图太过“冰冷”,缺乏上下文和演进痕迹。…

张小明 2026/1/8 6:22:56 网站建设

网站刷流量会怎么样阳江房产网资讯

2025年10月28日,第十四届全国人大常委会第十八次会议通过《关于修改〈中华人民共和国网络安全法〉的决定》,对2017年施行的《网络安全法》作出系统性修订。这是该法实施八年以来的首次重大修正,标志着我国网络空间治理体系进入“强监管、重安…

张小明 2026/1/5 11:36:08 网站建设

双桥集团网站建设弹窗广告投放平台

PDF批量处理神器:告别重复劳动,100个文档一键搞定! 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项…

张小明 2026/1/5 11:36:07 网站建设