C++ 拓扑排序
来源:互联网 发布:持仓异动指标源码 编辑:程序博客网 时间:2024/04/29 23:10
拓扑排序是对AOV网排序,AOV网主要用于表示活动间的优先关系,AOV网的特征是不存在回路,且是连通图,但一定不是强连通图。拓扑排序的算法是非常简单的,借助stl deque实现。把入度为0的顶点加入队尾,头出队列,访问这个顶点,并把这个顶点相连的顶点对应的边删除,若相连的点没有入度,则把相连的点加入队尾,直到队列长度为0
#include<iostream>#include<deque>#define MAX_VERTEX 100using namespace std;//liststruct Side{ int index; int weight;Side* next;}; struct Vertex{ char data;int in_nums;Side* first;}; typedef Vertex AdjList[MAX_VERTEX]; struct AdjGraph {AdjList adjlist; int num_vertex; int num_side; };int main(){deque<int> _queue;AdjGraph adjGraph;for(int i=0;i<MAX_VERTEX;i++){adjGraph.adjlist[i].in_nums=0;adjGraph.adjlist[i].data=0;adjGraph.adjlist[i].first=0;}cout<<"input vertex and side nums:";cin>>adjGraph.num_vertex>>adjGraph.num_side;cout<<"input vertex char data:";for(int i=0;i<adjGraph.num_vertex;i++){cin>>adjGraph.adjlist[i].data;}for(int i=0;i<adjGraph.num_side;i++){int v1;int v2;cout<<"input two vertex:";cin>>v1>>v2;Side* side1=new Side();side1->index=v2;if(adjGraph.adjlist[v1].first==0){adjGraph.adjlist[v1].first=side1;}else{Side* temp=adjGraph.adjlist[v1].first;adjGraph.adjlist[v1].first=side1;side1->next=temp;}adjGraph.adjlist[v2].in_nums++;}for(int i=0;i<adjGraph.num_vertex;i++){if(adjGraph.adjlist[i].in_nums==0){_queue.push_back(i);}}while(_queue.size()>0){int index=_queue.front();_queue.pop_front();cout<<adjGraph.adjlist[index].data<<' ';Side* first=adjGraph.adjlist[index].first;while(first!=0){adjGraph.adjlist[first->index].in_nums--;if(adjGraph.adjlist[first->index].in_nums==0){_queue.push_back(first->index);}first=first->next;}}cout<<endl;return 0;}
阅读全文
0 0
- 拓扑排序C语言
- 拓扑排序 C实现
- 拓扑排序C
- 拓扑排序_TopologicalSort.c
- [C++]拓扑排序
- 拓扑排序--C语言
- c语言实现拓扑排序
- C语言 拓扑排序基础
- [c]sdnuoj 1031 拓扑排序
- Codeforce 510C(拓扑排序)
- codeforce 510 C 拓扑排序
- codeforces 510c 拓扑排序
- 拓扑排序的c语言实现
- 拓扑排序(一)之 C语言详解
- 拓扑排序的c语言实现
- CodeForces 510C (拓扑排序)
- codeforces 501C (拓扑排序另类)
- 拓扑排序的c语言实现
- C++基础---无返回值函数(void函数)
- 2017年五月二十五日 NO.1 开始使用CSDN--了解MarkDown的语法
- 一些优秀的网站
- Go Timer的使用
- FlyWeight模式
- C++ 拓扑排序
- 一次完整的HTTP请求与响应涉及了哪些知识?
- 算法谜题73 逮公鸡
- ucosII 信号量的原理及应用
- 继承(二)
- spring 框架的xml文件如何读取properties文件数据
- jquery ajax POST 例子详解
- 嵌入式学习 DAY1 JZ2440 V3 裸版烧系统
- 清华大学心理学系主任彭凯平: 千万不要以为孤独了,我就完蛋了 ——“空巢青年”系列讨论之六