判别无向图中任意两个顶点之间是否存在长度为K的简单路径c语言版Word格式文档下载.docx
- 文档编号:21820229
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:8
- 大小:15.57KB
判别无向图中任意两个顶点之间是否存在长度为K的简单路径c语言版Word格式文档下载.docx
《判别无向图中任意两个顶点之间是否存在长度为K的简单路径c语言版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《判别无向图中任意两个顶点之间是否存在长度为K的简单路径c语言版Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
}key;
typedefstruct//顺序表
Node*top;
intlength;
intsize;
}Sqlist;
intlocal(Sqlistl,charv)
inti,j=-1;
for(i=0;
i<
l.length;
i++)
if(l.top[i].c==v)
j=i;
returnj;
}
GraphCreat(Graphg)
inti,j;
printf("
请输入图的点数:
"
);
scanf("
%d"
&
g.pointnum);
\n————顶点————\n"
getchar();
输入一个图中的顶点:
g.pointnum;
{
if(i)
printf("
继续输入一个顶点:
scanf("
%c"
g.point[i]);
getchar();
}
for(j=0;
j<
j++)
g.line[i][j]=0;
\n————边————\n"
\n请输入邻接矩阵:
(带权值的)\n\n"
scanf("
g.line[i][j]);
returng;
SqlistInit(Sqlistl)
l.top=(Node*)malloc(list_size*sizeof(Node));
if(!
l.top)
exit(0);
l.length=0;
l.size=list_size;
returnl;
SqlistCreat_list(Sqlistl,Graphg)
inti,j,flage=0;
Node*newbase;
key*element,*first;
if(l.length>
=l.size)
{
newbase=(Node*)realloc(l.top,(l.size+list_size)*sizeof(Node));
if(!
newbase)
exit(0);
l.top=newbase;
l.size+=list_size;
}
l.top[i].c=g.point[i];
l.length++;
flage=0;
l.top[i].next=0;
if(g.line[i][j]!
=0)
{
flage++;
if(flage==1)
{
element=(key*)malloc(sizeof(key));
element->
next=0;
c=g.point[j];
leng=g.line[i][j];
l.top[i].next=element;
first=element;
}
else
first->
next=element;
}
voiddisplay(Sqlistl)
inti;
key*f;
Node*e;
\n——————邻接表——————\n"
if(l.top[i].next!
%c->
l.top[i].c);
f=l.top[i].next;
while(f->
next)
printf("
%c,%d->
f->
c,f->
leng);
f=f->
next;
%c,%d"
printf("
\n"
else
%c\n"
charpath[Max]={0};
intvisit[Max]={0};
intflage=0;
intpath_length;
voidprint_path(charpath[])
inti=0;
while(path[i+1])
path[i]);
i++;
}
voidfind_path(Sqlistl,charv,charw,intk,intj,key*p)
charaim;
intm,flage1=0;
while(p)
aim=p->
c;
m=local(l,aim);
if(!
visit[m])
flage=1;
k-=p->
leng;
path[j]=aim;
visit[m]=1;
if(aim==w)
if(k==0)
printf("
两顶点之间存在长度为%d的路径:
path_length);
print_path(path);
else
两顶点之间不存在长度为%d的路径,但存在可达路径"
find_path(l,aim,w,k,j+1,l.top[m].next);
if(flage==1)
k+=p->
visit[m]=0;
p=p->
voidmain()
Graphg;
Sqlistlist;
charv,w;
intk,i=0,j;
key*point;
g=Creat(g);
list=Init(list);
list=Creat_list(list,g);
display(list);
请输入任意两个顶点:
%c,%c"
v,&
w);
请输入路径长度:
k);
path_length=k;
j=local(list,v);
path[0]=v;
visit[j]=1;
find_path(list,v,w,k,i+1,list.top[j].next);
if(flage==0)
两顶点之间不存在路径!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 判别 任意 两个 顶点 之间 是否 存在 长度 简单 路径 语言版
![提示](https://static.bdocx.com/images/bang_tan.gif)