用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

拓扑排序算法

2012-10-11 作者: 神马举报

[c]代码库

typedef struct vnode  /*顶点表结点*/
{
    int count /*存放顶点入度*/
    VertexType vertex; /*顶点域*/
    EdgeNode * firstedge; /*边表头指针*/
} VertexNode;
 
void Topo_Sort ( AlGraph *G )
{/*对以带入度的邻接链表为存储结构的图G,输出其一种拓扑序列*/
    int top = -1; /* 栈顶指针初始化*/
              for ( i=0;i<n;i++ ) /* 依次将入度为0 的顶点压入链式栈*/
    {
        if ( G->adjlist[i]. Count = = 0 )
        {
            G->adjlist[i].count = top;
                                  top = i;
                                    }
                                }
                                for ( i=0; i<n; i++ )
    {
        if ( t0p= -1 )
        {
            printf ( “The network has a cycle” );
            return;
        }
        j=top;
        top=G->adjlist[top].count; /* 从栈中退出一个顶点并输出*/
        printf ( “% c”,G->adjlist[j].vertex );
        ptr=G->adjlist[j].firstedge;
        while ( ptr!=null )
        {
            k=ptr->adjvex;
            G->adjlist[k].count--; /*当前输出顶点邻接点的入度减1*/
            if ( G->adjlist[k].count= =0 ) /*新的入度为0 的顶点进栈*/
            {
                G->adjlist[k].count =top;
                top=k;
            }
            ptr=ptr->next; /*找到下一个邻接点*/
        }
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...