while(jrear)
{
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