设为首页 加入收藏

TOP

邻接多重表存储无向图以及有关操作(二)
2014-11-24 03:13:35 来源: 作者: 【 】 浏览:7
Tags:邻接 多重 存储 向图 以及 有关 操作
p)

{

cout<<"顶点"<

while(p)

{

if(p->ivex == i)

{

cout<jvex].data<<" ";

p=p->ilink;

}

else

{

//p->jvex == i

cout<ivex].data<<" ";

p=p->jlink;

}

}

}

else

cout<<"该顶点无相邻顶点"<

}

bool Insert_Arc(string v1,string v2)

{

//插入新边,不插入平行边

if(Search_Arc(v1,v2))

{

cout<<"该边已存在图中,不重复插入"<

return false;

}

int i,j;

i=Locate_Vex(v1);

j=Locate_Vex(v2);

if(i == -1 || j == -1)

{

cout<<"两个顶点中,又不符合要求的,插入失败"<

return false;

}

EBox *p=new EBox;

p->ivex=i;

p->jvex=j;

p->ilink=adjmulist[i].firstedge;

p->jlink=adjmulist[j].firstedge;

adjmulist[i].firstedge=adjmulist[j].firstedge=p;

//记得边数要加1

arcnum++;

return true;

}

bool Delete_Arc(string v1,string v2)

{

//删除顶点v1,v2之间的边

if(Search_Arc(v1,v2))

{

int i,j;

i=Locate_Vex(v1);

j=Locate_Vex(v2);

if(i == -1 || j == -1)

{

cout<<"输入的顶点中,有不在图中的,所以删除失败"<

return false;

}

//四个指针,pre是指向待删除边的前一条边,rear是指向待删除的边

//i,j是代表两个端点

EBox *ipre,*irear,*jpre,*jrear;

//初始化四个指针

ipre=irear=adjmulist[i].firstedge;

jpre=jrear=adjmulist[j].firstedge;

//下面先判断第一条边是不是就是要删除的边

if(ipre->ivex == i && ipre->jvex == j)

{

adjmulist[i].firstedge=ipre->ilink;

adjmulist[j].firstedge=ipre->jlink;

delete ipre;

arcnum--;

return true;

}

else if(ipre->jvex == i && ipre->ivex == j)

{

adjmulist[i].firstedge=ipre->jlink;

adjmulist[j].firstedge=ipre->ilink;

delete ipre;

arcnum--;

return true;

}

else

{

//待删除的边不是第一条

//先让irear指向待删除的那条边

while(irear)

{

if(irear->ivex == i && irear->jvex != j)

{

ipre=irear;

irear=irear->ilink;

}

else if(irear->jvex == i && irear->ivex != j)

{

ipre=irear;

irear=irear->jlink;

}

else if(irear->ivex == i && irear->jvex == j)

break;

else if(irear->jvex == i && irear->ivex == j)

break;

}

if(!irear)

return false;

//下面让jrear指向待删除边

if(irear->ivex == i)

{

//所以irear->jvex == j

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ReportingServicetextbox换行 下一篇App数据层设计及云存储使用指南

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)