{
if(jrear->ivex == i && jrear->jvex == j)
break;
else if(jrear->jvex == j)
{
jpre=jrear;
jrear=jrear->jlink;
}
else if(jrear->ivex == j)
{
jpre=jrear;
jrear=jrear->ilink;
}
}
if(!jrear)
return false;
}
else
{
//irear->ivex == j
while(jrear)
{
if(jrear->ivex == j && jrear->jvex == i)
break;
else if(jrear->ivex == j)
{
jpre=jrear;
jrear=jrear->ilink;
}
else if(jrear->jvex == j)
{
jpre=jrear;
jrear=jrear->jlink;
}
}
if(!jrear)
return false;
}
//下面是开始删除,待删除边不是第一条边的情况
if(irear->ivex == i && irear->jvex == j)
{
//删除时要判断每个顶点关联的前一条边的情况
if(ipre->ivex == i)
ipre->ilink=irear->ilink;
else
ipre->jlink=irear->ilink;
if(jpre->ivex == j)
jpre->ilink=jrear->jlink;
else
jpre->jlink=jrear->jlink;
delete irear;
arcnum--;
return true;
}
else
{
//irear->jvex == i && irear->ivex == j
//删除时要判断每个顶点关联的前一条边的情况
if(ipre->ivex == i)
ipre->ilink=irear->jlink;
else
ipre->jlink=irear->jlink;
if(jpre->ivex == j)
jpre->ilink=jrear->ilink;
else
jpre->jlink=jrear->ilink;
delete irear;
arcnum--;
return true;
}
}
}
else
cout<<"该边不存在"< return false; } //深度优先遍历 void DFS_Traverse() { for(int i=0;i visited[i]=false; for(i=0;i if(!visited[i]) DFS(i); cout< } void DFS(int v) { visited[v]=true; cout< EBox *p=adjmulist[v].firstedge; while(p) { if(p->ivex == v) { if(!visited[p->jvex]) DFS