C语言数据结构无向图删除边

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:12:21
无向图采用邻接表存储方式,删除边(i,j)的算法。

万分感谢!!!

//在用邻接表方式存储的无向图g中,删除边(i,j)
void DeletEdge(AdjList g,int i,j)
{
//先删除定点i的边(i,j)
p=g[i].firstarc;
pre=null; //删顶点i 的边结点(i,j),pre是前驱指针

while (p)
if (p->adjvex==j)
{
if(pre==null) g[i].firstarc=p->next;
else pre->next=p->next;
free(p);//释放结点空间
}
else
{
pre=p;
p=p->next;//沿链表继续查找
}

//删顶点j 的边结点(j,i)
p=g[j].firstarc;
pre=null;

while (p)
if (p->adjvex==i)
{
if(pre==null)g[j].firstarc=p->next;
else pre->next=p->next;
free(p);//释放结点空间
}
else
{
pre=p;
p=p->next;//沿链表继续查找
}

}// DeletEdge