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

一站式网站建设与运营/30个免费货源网站

一站式网站建设与运营,30个免费货源网站,营销型网站建设的五力原则,做瞹免费视频网站图解演示拓扑排序的过程 不是AOV网的情况 由下可知&#xff0c;当前图中存在回路&#xff0c;不是AOV网 拓扑排序的数据结构 编程流程 拓扑排序算法伪代码 完整代码 #include<iostream> using namespace std; #include<stack> #define MAX 10//最大顶点…

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图解演示拓扑排序的过程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不是AOV网的情况

在这里插入图片描述
由下可知,当前图中存在回路,不是AOV网
在这里插入图片描述

拓扑排序的数据结构

在这里插入图片描述
编程流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拓扑排序算法伪代码

在这里插入图片描述
完整代码

#include<iostream>
using namespace std;
#include<stack>
#define MAX 10//最大顶点数为10
//边表结构体
typedef struct EdgeNode
{int agjvex;//邻接点域,存储顶点对应的下标//int weight;//用来存储权值,对于非网图这里可以不需要struct EdgeNode* next;//链域,指向下一个邻接点
}EdgeNode;
//顶点表结构体
typedef struct VertexNode 
{int in;//顶点入度int data;//顶点域,存储顶点信息EdgeNode* firstedge;//边表头指针
}VertexNode,AdjList[MAX];//顶点结构体数组最大长度为10
//图
class Graph 
{
private:int verNum;//顶点个数int arcNum;//边的个数
public:AdjList adjlist;//顶点结构体数组Graph(int v[], int n, int e);void display();int getVerNum(){return verNum;}
};
Graph::Graph(int v[], int n, int e)
{verNum = n;arcNum = e;//初始化顶点数组for (int i = 0; i < verNum; i++){adjlist[i].data = v[i];adjlist[i].firstedge = NULL;adjlist[i].in = 0;}//建立边的关系int vi, vj;for (int i = 0; i < arcNum; i++){cin >> vi >> vj;EdgeNode* s = new EdgeNode;s->agjvex = vj;//头插法s->next = adjlist[vi].firstedge;adjlist[vi].firstedge = s;}//计算每个顶点的入度for (int i = 0; i < verNum; i++){for (int j = 0; j < verNum; j++){EdgeNode* edge = adjlist[j].firstedge;while (edge){if (edge->agjvex == i){adjlist[i].in++;}edge = edge->next;}}}
}
//打印顶点表和边表
void Graph::display()
{for (int i = 0; i < verNum; i++){cout <<"当前顶点的入度:"<<adjlist[i].in<<"  当前顶点信息为:" <<adjlist[i].data << "-->";EdgeNode* move = adjlist[i].firstedge;while (move){cout << move->agjvex << " ";move = move->next;}cout << endl;}
}
//拓扑排序
void TopologicalSort(Graph g)
{//1.栈s初始化,累加器count初始化stack<VertexNode> s;int count = 0;//2.扫描顶点表,将没有前驱的顶点入栈for (int i = 0; i < g.getVerNum(); i++){if (g.adjlist[i].in == 0){s.push(g.adjlist[i]);//入完栈之后,把该节点的in设置为-1,防止下次重复入栈g.adjlist[i].in = -1;}}//3.当栈s非空时循环while (!s.empty()){//3.1 Vj=退出栈顶的元素,输出Vj,累加器加1VertexNode Vj = s.top();   s.pop();cout << Vj.data << " ";count++;//3.2  将顶点Vj的各个邻接点的入度减一EdgeNode* move = Vj.firstedge;while (move){g.adjlist[move->agjvex].in--;move = move->next;}//3.3 将新的入度为0的顶点入栈(这里注意,之前入过栈的元素不能再次入栈,不然会造成死循环)for (int i = 0; i < g.getVerNum(); i++){if (g.adjlist[i].in == 0){s.push(g.adjlist[i]);//入完栈之后,把该节点的in设置为-1,防止下次重复入栈g.adjlist[i].in = -1;}}}//4.if(count<vertexNum)输出有回路信息cout << endl;if (count < g.getVerNum()){cout << "有回路" << endl;}
}
void test()
{int v[6] = { 0,1,2,3,4,5 };Graph g(v,6,9);cout << "打印顶点表和边表" << endl;g.display();cout << "拓扑序列: " << endl;TopologicalSort(g);
}
int main()
{test();system("pause");return 0;
}

在这里插入图片描述

http://www.lbrq.cn/news/1578943.html

相关文章:

  • 如何建微信商城网站/广州婚恋网站排名
  • 建站域名/营销型网站分析
  • 网站的系统建设方式/网站关键词优化培训
  • 网站淘宝客怎么做的/网上售卖平台有哪些
  • wordpress媒体库删除/网络优化是干什么的
  • 网站 做百度推广有没有效果怎么样/品牌宣传方式
  • 深圳做律师网站公司/深圳网站优化平台
  • 拼多多卖网站建设/googleplay官方下载
  • 国内漂亮网站欣赏/营销软文范例大全300
  • 西安网站注册/企业网站seo排名
  • wordpress新打开空白页/举例说明seo
  • 营销型网站建设论文/软考培训机构哪家好一点
  • 如何做自己网站/微博推广效果怎么样
  • 承接网站建设 优帮云/电商营销推广方案
  • 广告公司做网站的效果怎么样/网络营销优化培训
  • 手机网站轮播图/鹤壁seo公司
  • 威县做网站哪里便宜/郑州网站推广公司排名
  • 南山做网站方案/seo搜索优化是什么
  • app设计网站推荐/湖南百度推广
  • 什么网站可以做行测/百度官方平台
  • 平面设计师工资一般多少钱一个月/西安网站关键词优化推荐
  • 淘宝网站建设退款/做网络推广怎么收费
  • 关于动漫的网站建设/网络广告营销的特点
  • 网络推广和网站推广平台/seo搜索引擎优化薪酬
  • 自己做代购网站/网页设计是干嘛的
  • 本地网站asp iis/seo优
  • 网站图片一般分辨率做多大/最有效的推广方式
  • 临汾网站建设电话/如何做谷歌seo推广
  • 网站建设流程周期/重大军事新闻
  • 苏州相城区做网站/2022年新闻热点事件
  • Python网络爬虫(一) - 爬取静态网页
  • (Arxiv-2025)Phantom:通过跨模态对齐实现主体一致性视频生成
  • 【论文阅读】Deep Adversarial Multi-view Clustering Network
  • 整数规划-分支定界
  • 【Docker实战】将Django应用容器化的完整指南
  • #C语言——刷题攻略:牛客编程入门训练(八):分支控制(二)