第13周项目5-拓扑排序算法验证

来源:互联网 发布:小个子穿衣购买软件 编辑:程序博客网 时间:2024/05/01 21:40

问题及代码:

/*  * Copyright (c)2016,烟台大学计算机与控制工程学院  * All rights reserved.  * 文件名称:sss.cbp  * 作    者:孙子晴* 完成日期:2016年12月5日  * 版 本 号:v1.0    * 问题描述:拓扑排序算法的验证    * 输入描述:无  * 程序输出:测试数据  */    
头文件及功能函数详见【图基本算法库】

测试用图:

main.cpp中的代码:


#include "graph.h"    #include "stdio.h"        void TopSort(ALGraph *G)    {        int i,j;        int St[MAXV],top=-1;            //栈St的指针为top        ArcNode *p;        for (i=0; i<G->n; i++)          //入度置初值0            G->adjlist[i].count=0;        for (i=0; i<G->n; i++)          //求所有顶点的入度        {            p=G->adjlist[i].firstarc;            while (p!=NULL)            {                G->adjlist[p->adjvex].count++;                p=p->nextarc;            }        }        for (i=0; i<G->n; i++)            if (G->adjlist[i].count==0)  //入度为0的顶点进栈            {                top++;                St[top]=i;            }        while (top>-1)                  //栈不为空时循环        {            i=St[top];            top--;              //出栈            printf("%d ",i);            //输出顶点            p=G->adjlist[i].firstarc;   //找第一个相邻顶点            while (p!=NULL)            {                j=p->adjvex;                G->adjlist[j].count--;                if (G->adjlist[j].count==0)//入度为0的相邻顶点进栈                {                    top++;                    St[top]=j;                }                p=p->nextarc;       //找下一个相邻顶点            }        }    }            int main()    {        ALGraph *G;        int A[10][10]=        {            {0,0,0,1,1,0,0,0,0,1},            {0,0,1,1,0,0,0,1,0,0},            {0,0,0,0,1,1,0,0,1,0},            {0,0,0,0,0,0,1,0,0,0},            {0,0,0,0,0,0,0,1,0,0},            {0,0,0,0,1,0,0,0,0,0},            {0,0,0,0,0,0,0,0,0,0},            {0,0,0,0,0,0,1,0,0,0},            {0,0,0,0,0,0,0,0,0,1},            {0,0,0,0,0,0,0,0,0,0}        };        ArrayToList(A[0], 10, G);        DispAdj(G);        printf("\n");        printf("拓扑序列:");        TopSort(G);        printf("\n");        return 0;    }    

运行结果:


知识点总结:

拓扑排序算法的验证。


0 0