数据结构实验 图的储存与遍历Word文件下载.docx

上传人:b****4 文档编号:13756445 上传时间:2022-10-13 格式:DOCX 页数:10 大小:211.21KB
下载 相关 举报
数据结构实验 图的储存与遍历Word文件下载.docx_第1页
第1页 / 共10页
数据结构实验 图的储存与遍历Word文件下载.docx_第2页
第2页 / 共10页
数据结构实验 图的储存与遍历Word文件下载.docx_第3页
第3页 / 共10页
数据结构实验 图的储存与遍历Word文件下载.docx_第4页
第4页 / 共10页
数据结构实验 图的储存与遍历Word文件下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数据结构实验 图的储存与遍历Word文件下载.docx

《数据结构实验 图的储存与遍历Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验 图的储存与遍历Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。

数据结构实验 图的储存与遍历Word文件下载.docx

V2

V3

V4

三、附录:

在此贴上调试好的程序。

#include<

stdio、h>

malloc、h>

string、h>

#defineM100

typedefstructnode

{

charvex[M][2];

intedge[M][M];

intn,e;

}Graph;

intvisited[M];

Graph*Create_Graph()

{Graph*GA;

inti,j,k,w;

GA=(Graph*)malloc(sizeof(Graph));

printf("

请输入矩阵的顶点数与边数(用逗号隔开):

\n"

);

scanf("

%d,%d"

&

GA->

n,&

e);

请输入矩阵顶点信息:

for(i=0;

i<

n;

i++)

scanf("

%s"

(GA->

vex[i][0]),&

vex[i][1]));

for(i=0;

i++)

for(j=0;

j<

j++)

GA->

edge[i][j]=0;

for(k=0;

k<

e;

k++)

{printf("

请输入第%d条边的顶点位置(i,j)与权值(用逗号隔开):

"

k+1);

scanf("

%d,%d,%d"

i,&

j,&

w);

edge[i][j]=w;

}

return(GA);

}

 

voiddfs(Graph*GA,intv)

{inti;

printf("

%c%c\n"

GA->

vex[v][0],GA->

vex[v][1]);

visited[v]=1;

for(i=0;

i<

i++)

if(GA->

edge[v][i]==1&

&

visited[i]==0)dfs(GA,i);

voidtraver(Graph*GA)

visited[i]=0;

if(visited[i]==0)

dfs(GA,i);

voidbfs(Graph*GA,intv)

{intj,k,front=-1,rear=-1;

intQ[M];

rear=rear+1;

Q[rear]=v;

while(front!

=rear)

{front=front+1;

k=Q[front];

for(j=0;

j<

j++)

edge[k][j]==1&

visited[j]==0)

{printf("

vex[j][0],GA->

vex[j][1]);

visited[j]=1;

Q[rear]=j;

}

voidtraver1(Graph*GA)

for(i=0;

i++)

if(visited[i]==0)

bfs(GA,i);

typedefstructNODE

{intadjvex;

structNODE*next;

}ENode;

typedefstructNODE1

{charvex[2];

ENode*first;

}VexNode;

typedefstructFS1

VexNodeGL[M];

intbian,top;

}FS;

FS*CreateGL()

{FS*kk=(FS*)malloc(sizeof(FS));

inti,j,k;

ENode*s;

请输入顶点数与边数(用逗号隔开):

kk->

top,&

bian);

请输入顶点信息:

top;

{scanf("

kk->

GL[i]、vex);

kk->

GL[i]、first=NULL;

请输入边的信息(i,j):

for(k=0;

bian;

k++)

\n%d,%d"

j);

s=(ENode*)malloc(sizeof(ENode));

s->

adjvex=j;

next=kk->

GL[i]、first;

GL[i]、first=s;

returnkk;

voidDFS(FS*kk,intv)

{ENode*w;

inti;

%s\n"

GL[v]、vex);

w=kk->

GL[v]、first;

while(w!

=NULL)

{i=w->

adjvex;

DFS(kk,i);

w=w->

next;

voidTRAVER(FS*kk)

DFS(kk,i);

voidBFS(FS*kk,intv)

{intQ[M],front=-1,rear=-1;

ENode*w;

inti,k;

=rear)

k=Q[front];

GL[k]、first;

while(w!

=NULL)

if(visited[i]==0)

{visited[i]=1;

Q[rear]=i;

voidTRAVER1(FS*kk)

i++)visited[i]=0;

i<

BFS(kk,i);

intmain()

inti=0;

Graph*p;

FS*q;

while(i=1)

{

/*建立菜单*/

charjz[30]={"

1、创建邻接矩阵"

};

charjd[30]={"

2、邻接矩阵DFS遍历"

charjb[30]={"

3、邻接矩阵BFS遍历"

charbg[30]={"

4、创建邻接表"

charbd[30]={"

5、邻接表DFS遍历"

charbb[30]={"

6、邻接表BFS遍历"

chartc[30]={"

7、退出"

charmn[30]={"

菜单"

intl=strlen(jd);

into=strlen(mn);

intm,n;

printf("

for(m=0;

m<

=(2*l-o)/2;

m++)

printf("

"

mn);

=2*l;

*"

*%s*\n*%s*\n*%s*\n*%s*\n*%s*\n*%s*\n*%s*\n"

jz,jd,jb,bg,bd,bb,tc);

/*选择功能*/

请输入所需功能序号:

%d"

n);

switch(n){

case1:

p=Create_Graph();

break;

case2:

traver(p);

case3:

traver1(p);

case4:

q=CreateGL();

case5:

TRAVER(q);

case6:

TRAVER1(q);

case7:

return0;

default:

printf("

输入功能序号有误!

}

四、运行结果:

在此把运行结果从屏幕上拷下来贴在此

五、心得体会:

测试数据要注意现实中矩阵就是从1开始,而数组里就是从0开始。

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

当前位置:首页 > 初中教育 > 其它课程

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

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