扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(7)

2013-12-11 14:39:50来源:新东方在线编辑

  拓扑排序问题

  Status ToplogicalSort(ALGraph G)

  {

  FindIndegree(G,indegree);//求各点的入度放在Indegree[vnum];

  InitStack(S);

  for(i=0;i

  if(Indegree[i]= =0)

  push(S,i);

  count=0;

  while(!StackEmpty(S))

  { Pop(S,i); printf(i,G.vex[i].data); ++count;

  for(p=G..vex[i].firstarc; p; p=p->nextarc)

  { k=p->adjvex;

  Indegree[k]--;

  if( Indegree[k]= =0) push(S,k);

  }//for

  }//while

  if(count

  return ERROR;

  else

  return OK

  }

  算法分析:求各顶点的入度的时间复杂度为O(e),入度为零的点入栈O(n),在循环中,每个顶点进一次栈,出栈一次,入度减1操作在while共执行了e次,所以总的时间复杂度为O(n+e).

  当图中无环时,也可以利用深度优先遍历进行拓扑排序,因为图中无环,所以最先退出DFS函数的顶点即出度为零的点,是拓扑排序中最后一个顶点。由此,按DFS函数的先后记录下来的顶点序列即为逆向的拓扑有序序列。

考研公开课小程序

本文关键字: 计算机 考研 数据结构

声明:如本网转载稿涉及版权等问题,请作者致信lulei@xdfzx.com,我们将及时处理。

限时免费
资料推荐
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

考研资料大礼包
近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料
获取验证码
收不到短信?点此接收语音验证码
电话拨打中...请留意来自125909888237的来电
60秒后可重新获取
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
账号密码登录 找回密码
国际手机登录
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
手机快速登录 找回密码
获取验证码
收不到短信?点此接收语音验证码
电话拨打中...请留意来自125909888237的来电
60秒后可重新获取
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
账号密码登录 找回密码
国际手机登录
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
手机快速登录 找回密码
获取验证码
收不到短信?点此接收语音验证码
电话拨打中...请留意来自125909888237的来电
60秒后可重新获取
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
账号密码登录 找回密码
国际手机登录
《新东方在线注册条款》  、  《隐私权保护政策》  及  《儿童隐私保护政策》
手机快速登录 找回密码