爱问知识人 爱问教育 医院库

用完整的C语言编写单链表的长度

首页

用完整的C语言编写单链表的长度


        

提交回答
好评回答

其他答案

    2005-12-08 12:29:00
  •   #defineMAX_VERTEX_NUM20typedefstructArcBox{Inttailvex,headvex;StructArcBox*hlink,* }ArcBox;//定义弧tpedefstructvexnode{VertexTypedata;ArcBox*firstin,*firstout;}VexNode;//定义定点typedefstruct{VexNodeXlist[MAX_VERTEX_NUM];Intvexnumarcnum;}OLGraph;//定义图LocatFirstNull(OLGraph&G,inti,intn)//查找第一个没有前驱的顶点,即第一个firstin为空的顶点,返回其位置i,n为循环次数,等于初始时顶点的个数。
      {for(k=0;k<n;k++){if(!G。XList[k]。firstin){i=k;returntrue;}}returnfalse;}LocatFistinheadVex(OLGraph&G,intj,intv2,intn)//查找firstin指向弧的headvex=v2的顶点,返回其位置j{for(i=0;i<n;i++){if(*G。
      XList[i]。firstin。headvex==v2){j=i;returntrue;}}retrunfalse;}TopSort(OLGraph&G){ArcBox*p1,*p2,*pt;inti,j,n;n= xnum;while(LocatFirstNull(G,i,n)){p1=G。
      XList[i]。firstout;free(G。XList[i]);//释放数据,保留位置,可以使用无效数据填充;因为若把位置删除,会使图的存储变乱。在释放前加printfG。XList[i]。data,最后得到该图拓扑序列。 xnum--;while(p1){if(LocateFirstinheadvex(G,j,*p1。
      headvex,n)){p2=G。XList[j]。firstin;while(*p2。hink。tailvex!=*p1。tailvex)p2=p2。hlink;p2。hlink=h1。hlink;//修改同尾链域的指针,使原来指向要删除弧的指针,指向下一个或空。
      }t=p1; ink;free(t);//释放以删除顶点为尾的弧; cnum--;}}if( xnum==0)printf此图没有回路!;elseprintf此图有回路;}。

    w***

    2005-12-08 12:29:00

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):