正在加载图片...
i//for for(i=0in;i+)/删除所有以v为尾的边 if(G xlist [].firstout> headvex=m)∥/如果待删除的边是尾链上的第一个结点 FG. xlist[]. firstout G xlist[]. firstout=q->tlink free(q): G else∥则 for(p=G xlist i firstout: p&&p->tIink->headvexl=m P=p->tlink); q=p->tlink p→ tlink=q> tlink free(q): G.arcnum-- i/else for(i=mi<n;计+)∥顺次用结点m之后的顶点取代前一个顶点 G. xlist= G. xlist[i+1,∥修改表头向量 for(p=Gxlist[]. firstin p; p=p->hlink p->head vex-, for(p=G xlist [i]. firstout p: p=p->tlink) tailvex-;∥修改各链中的顶点序号 G.vexnum-- return OK i/Delete Vex 7.18 ∥.节省篇幅,本题只给出 Delete arc算法.其余算法请自行写出. Status delete arc( AMLGraph& G. char v, char w)∥在邻接多重表表示的图G上删 除边(v if((i-Locate Vex(G, v)0) return ERROR if(=Locate Vex(G, w)0) return ERROR; if(G. adjmulist[j]. firstedge- G. adjmulist[i].firstedge=G. adjmulist[]. firsted ge->ilink; el}//for for(i=0;i<n;i++) //删除所有以 v 为尾的边 { if(G.xlist[i].firstout->headvex==m) //如果待删除的边是尾链上的第一个结点 { q=G.xlist[i].firstout; G.xlist[i].firstout=q->tlink; free(q);G.arcnum--; } else //否则 { for(p=G.xlist[i].firstout;p&&p->tlink->headvex!=m;p=p->tlink); if(p) { q=p->tlink; p->tlink=q->tlink; free(q);G.arcnum--; } }//else }//for for(i=m;i<n;i++) //顺次用结点 m 之后的顶点取代前一个顶点 { G.xlist[i]=G.xlist[i+1]; //修改表头向量 for(p=G.xlist[i].firstin;p;p=p->hlink) p->headvex--; for(p=G.xlist[i].firstout;p;p=p->tlink) p->tailvex--; //修改各链中的顶点序号 } G.vexnum--; return OK; }//Delete_Vex 7.18 //为节省篇幅,本题只给出 Delete_Arc 算法.其余算法请自行写出. Status Delete_Arc(AMLGraph &G,char v,char w)////在邻接多重表表示的图 G 上删 除边(v,w) { if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; if(G.adjmulist[i].firstedge->jvex==j) G.adjmulist[i].firstedge=G.adjmulist[i].firstedge->ilink; else {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有