最小单元路径 数据结构 实验 程序Word文档格式.docx
- 文档编号:15182488
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:11
- 大小:16.49KB
最小单元路径 数据结构 实验 程序Word文档格式.docx
《最小单元路径 数据结构 实验 程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《最小单元路径 数据结构 实验 程序Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
voidCreateDG(MGraph*G);
//有向图
voidCreateDN(MGraph*G);
//有向网
voidCreateUDG(MGraph*G);
//无向图
voidCreateUDN(MGraph*G);
//无向网
intLocateVex(MGraph*G,charv[4]);
voidFirst_next_adj(MGraph*G,inti);
voiddfs1(MGraph*G,inti);
voidbfs1(MGraph*G,inti);
voidshortesPath_DIJ(MGraph*G,intv0,intp[][MAX_VERTEX_NUM],intd[MAX_VERTEX_NUM]);
#defineQUEUE_INIT_SIZE100
#defineQUEUEINCREMENT10
typedefintQElemType;
QElemType*elem;
intfront;
intrear;
intqueuesize;
intincrementsize;
}SqQueue;
voidInitqueue_sq(SqQueue*q,intn);
intQueuelength_sq(SqQueueQ);
intDequeue_sq(SqQueue*Q,QElemType*e);
voidincrement(SqQueue*Q);
voidEnqueue_sq(SqQueue*Q,QElemTypee);
intGetqueue_sq(SqQueueQ,QElemType*e);
intQueueempty(SqQueueQ);
voidmain(){
MGraphG;
inti,j;
charv[4];
intp[MAX_VERTEX_NUM][MAX_VERTEX_NUM],d[MAX_VERTEX_NUM];
CreateGraph(&
G);
for(i=0;
i<
G.vexnum;
++i){
for(j=0;
j<
++j)
printf("
%8d"
G.arcs[i][j].adj);
putchar('
\n'
);
}
printf("
请输入深度优先搜索初始顶点Vi:
"
getchar();
scanf("
%s"
v);
i=LocateVex(&
G,v);
dfs1(&
G,i);
\n请输入广度优先搜索初始顶点Vi:
bfs1(&
if(G.kind==DN||G.kind==UDN){
printf("
\n输入查找第一邻接点的顶点:
getchar();
scanf("
First_next_adj(&
shortesPath_DIJ(&
G,0,p,d);
}
voiddfs1(MGraph*G,inti){
intj;
%5s"
G->
vexs[i]);
visited[i]=1;
for(j=0;
G->
vexnum;
j++)
if(i!
=j&
&
arcs[i][j].adj!
=INFINITY&
!
visited[j])
dfs1(G,j);
voidbfs1(MGraph*G,inti){
intk,j;
SqQueueQ;
visited[j]=0;
Initqueue_sq(&
Q,G->
vexnum);
\n%5s"
Enqueue_sq(&
Q,i);
while(!
Queueempty(Q)){
Dequeue_sq(&
Q,&
k);
j++){
if(k!
arcs[k][j].adj!
visited[j]){
printf("
vexs[j]);
visited[j]=1;
Enqueue_sq(&
Q,j);
}
}
intLocateVex(MGraph*G,charv[4]){
inti=0;
while(i<
vexnum){
if(strcmp(G->
vexs[i],v)==0)returni;
i++;
\n输入的顶点不存在!
return0;
voidCreateUDG(MGraph*G){
inti,j,k;
charv1[4],v2[4];
输入vexnum,arcnum:
%d%d"
&
vexnum,&
arcnum);
输入vexs[i]:
\n"
for(i=0;
++i)
gets(G->
for(j=0;
++j){
G->
arcs[i][j].adj=INFINITY;
arcs[i][j].info=NULL;
for(k=0;
k<
++k){
输入v1,v2:
scanf("
%s%s"
v1,v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
%4s%4s%8d%8d\n"
v1,v2,i,j);
G->
arcs[i][j].adj=1;
arcs[j][i].adj=1;
voidCreateUDN(MGraph*G){
inti,j,k,w;
for(i=0;
输入v1,v2,w:
%s%s%d"
v1,v2,&
w);
arcs[i][j].adj=w;
arcs[j][i].adj=G->
arcs[i][j].adj;
voidCreateDG(MGraph*G)
{
voidCreateDN(MGraph*G){
}
arcnum;
voidCreateGraph(MGraph*G){
intk;
输入图的类型\nDG-0,DN-1,UDG-2,UDN-3:
%d"
switch(k){
case0:
G-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最小单元路径 数据结构 实验 程序 最小 单元 路径