用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...