c语言求解多段图(向前处理法).docx

c语言求解多段图(向前处理法).docx

ID:50824484

大小:31.89 KB

页数:3页

时间:2020-03-15

c语言求解多段图(向前处理法).docx_第1页
c语言求解多段图(向前处理法).docx_第2页
c语言求解多段图(向前处理法).docx_第3页
资源描述:

《c语言求解多段图(向前处理法).docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#include#defineInfinity1000//无穷大#defineMax45#definenull0typedefstructArcNode//边结点{intadjvex;//边的终点intweigh;//边的权structArcNode*nextarc;//下一条邻接边}ArcNode;typedefstructVNode//顶结点{chardata;//顶点ArcNode*firstarc;//第一条邻接边}VNode,AdjList[Max];typedefstruct//图{intvexnum,arcnum;//顶点数,

2、边数AdjListvertices;//顶点集合表}Graph;voidCreatGraph(Graph*G)//建立有向图{inti,j;FILE*fp;ArcNode*p;if((fp=fopen("Init.dat","r"))==NULL){printf("Cannotopenthefile!");exit(0);}fscanf(fp,"%d%d",&G->vexnum,&G->arcnum);//从文件中读取顶点数和边数for(i=1;i<=G->vexnum;i++){fscanf(fp,"%c",&G->vertices[i].data);//从文件中读取顶点名称G->ver

3、tices[i].firstarc=NULL;//将第一条邻接边的地址赋为空}for(i=1;i<=(*G).arcnum;i++){p=(ArcNode*)malloc(sizeof(ArcNode));fscanf(fp,"%d%d%d",&j,&p->adjvex,&p->weigh);p->nextarc=G->vertices[j].firstarc;//使用插表头的方法插入邻接边G->vertices[j].firstarc=p;}}voidmain(){inti,j;intcost[13],d[13],q[6];intb,min;Graph*G;G=(Graph*)malloc(

4、sizeof(Graph));ArcNode*p;CreatGraph(G);printf("TheGraph:");//输出有向图for(i=1;ivexnum;i++){p=G->vertices[i].firstarc;printf("%d-->%d",i,p->adjvex);while(p->nextarc!=null){printf("%d",p->nextarc->adjvex);p=p->nextarc;}printf("");}printf("12");//向后处理法cost[12]=0;for(j=11;j>=1;j--){p=G->vertices[j

5、].firstarc;min=p->weigh+cost[p->adjvex];cost[j]=min;d[j]=p->adjvex;while(p->nextarc!=null){b=p->nextarc->weigh+cost[p->nextarc->adjvex];if(bnextarc->adjvex;}p=p->nextarc;}}//找一条最小路径q[1]=1;q[5]=12;for(j=2;j<=4;j++)q[j]=d[q[j-1]];printf("ashortestwayis:");for(i=1;i<=4

6、;i++)printf("%d-->",q[i]);printf("%d",q[i]);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。