最小单元路径 数据结构 实验 程序Word文档格式.docx

上传人:b****2 文档编号:15182488 上传时间:2022-10-28 格式:DOCX 页数:11 大小:16.49KB
下载 相关 举报
最小单元路径 数据结构 实验 程序Word文档格式.docx_第1页
第1页 / 共11页
最小单元路径 数据结构 实验 程序Word文档格式.docx_第2页
第2页 / 共11页
最小单元路径 数据结构 实验 程序Word文档格式.docx_第3页
第3页 / 共11页
最小单元路径 数据结构 实验 程序Word文档格式.docx_第4页
第4页 / 共11页
最小单元路径 数据结构 实验 程序Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

最小单元路径 数据结构 实验 程序Word文档格式.docx

《最小单元路径 数据结构 实验 程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《最小单元路径 数据结构 实验 程序Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

最小单元路径 数据结构 实验 程序Word文档格式.docx

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-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1