正在加载图片...
for(p=G. adjmulist[]. firstedge p&&p->ilink->jvex!=j p=p->ilink ) if(p) return error;∥.找到 p->link=p->ilink->ilink }/在i链表中删除该边 if(G. adjmulist []. firstedge->ivex==i) G. adjmulist[]. firstedge=G. adjmulist[]. firstedge->jlink else for(p=G. adjmulist I]. firsted ge, p&&p->jlink->ivex=i; p=p->jlink ); if(p) return error;∥未找到 q=p->jlink; p->jlink=q->jlin ee }/在i链表中删除该边 G.arcum- eturn OK. i/Delete Arc 7.19 Status Build Ad](( AMLGraph&G输入有向图的顶点数边数顶点信息和 边的信息建立邻接多重表 Init AMLGraph(G); scanf("%d", &v) ifv<o) return Error;∥顶点数不能为负 G. vexnum=v ifa<o) return error;∥边数不能为负 for(m=0; m<v; m++ G. adjmulist[m]data= getchar,/输入各顶点的符号 for(m=l; m<=a, m++) t= getchar(: h= getcha(0;M为弧尾h为弧头 if(LOcate Vex(G, t )0) return ERROR if(= Locate vex(Gh)<O) return error;∥顶点未找到 p=(EBox* )malloc(sizeof(EBox); p->lvex=lp→ pve=J p> ilink-NULL p>jink=NULL;∥边结点赋初值 if(!G. adjmulist [ ].firstedge)G. adjmulist [].firstedge=p: else q=G.adjmulist i firsted ge, while(q)for(p=G.adjmulist[i].firstedge;p&&p->ilink->jvex!=j;p=p->ilink); if (!p) return ERROR; //未找到 p->ilink=p->ilink->ilink; } //在 i 链表中删除该边 if(G.adjmulist[j].firstedge->ivex==i) G.adjmulist[j].firstedge=G.adjmulist[j].firstedge->jlink; else { for(p=G.adjmulist[j].firstedge;p&&p->jlink->ivex!=i;p=p->jlink); if (!p) return ERROR; //未找到 q=p->jlink; p->jlink=q->jlink; free(q); } //在 i 链表中删除该边 G.arcnum--; return OK; }//Delete_Arc 7.19 Status Build_AdjMulist(AMLGraph &G)//输入有向图的顶点数,边数,顶点信息和 边的信息建立邻接多重表 { InitAMLGraph(G); scanf("%d",&v); if(v<0) return ERROR; //顶点数不能为负 G.vexnum=v; scanf(%d",&a); if(a<0) return ERROR; //边数不能为负 G.arcnum=a; for(m=0;m<v;m++) G.adjmulist[m].data=getchar(); //输入各顶点的符号 for(m=1;m<=a;m++) { t=getchar();h=getchar(); //t 为弧尾,h 为弧头 if((i=LocateVex(G,t))<0) return ERROR; if((j=LocateVex(G,h))<0) return ERROR; //顶点未找到 p=(EBox*)malloc(sizeof(EBox)); p->ivex=i;p->jvex=j; p->ilink=NULL;p->jlink=NULL; //边结点赋初值 if(!G.adjmulist[i].firstedge) G.adjmulist[i].firstedge=p; else { q=G.adjmulist[i].firstedge; while(q)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有