离散数学实验报告__四个实验!!! 下载本文

内容发布更新时间 : 2024/6/24 2:21:52星期一 下面是文章的全部内容请认真阅读。

.

int u,v; cin>>u>>v; p=new node; p->adjvex=v;

p->next=adj[u].next; adj[u].next=p; }

return 1; }

void print(int n)//邻接表打印函数 {

int i; node *p;

for(i=0;i<=n-1;i++) {

p=&adj[i]; while(p!=NULL) {

cout<adjvex<<' '; p=p->next; }

cout<

void topsort(node adj[],int n) {

int i; node *p;

memset(indegree,0,sizeof(indegree)); for(i=0;i<=n-1;i++) {

p=adj[i].next; while(p!=NULL) {

indegree[p->adjvex]++; p=p->next; } }

for(i=0;i<=n-1;i++) {

if(indegree[i]==0)

word资料

.

mystack.push(i); }

int count=0;

while(mystack.size()!=0) {

i=mystack.top(); mystack.pop(); cout<

for(p=adj[i].next;p!=NULL;p=p->next) {

int k=p->adjvex; indegree[k]--; if(indegree[k]==0) mystack.push(k); } }

cout<

if(count

int main() {

int n; int m;

cout<<\拓扑排序算法\ cout<<\请输入顶点数及边数:\ cin>>n>>m;

Create(adj,n,m);

cout<<\输入的邻接表为:\ print(n);

cout<<\拓扑排序结果为:\ topsort(adj,n); system(\ return 0; }

七、程序运行截图

以下图为例:

word资料

.

i、程序启动截图

ii、程序输入截图

iii、程序运行结果截图

word资料

.

八、实验总结

通过本次实验掌握拓扑排序的算法,了解拓扑排序的有向图的数据结构。

参考文献

1.《离散数学》 冯伟森、栾新成、石兵等编著 机械工业出版社 2.《C语言程序设计》 良银、游洪跃、旭伟等编著 清华大学出版社 3.《C++:面向对象程序设计》 涛、游洪跃等编 高等教育出版社

word资料