实验六 图

一、       实验目的

1.熟悉图的邻接矩阵和邻接表的存储结构

2.熟悉图的邻接矩阵和邻接表的建立算法

3.掌握图的遍历算法

 

二、       实验内容

1. 无向图采用邻接矩阵存储,编写深度优先搜索遍历算法,从不同的顶点出发对无向图进行遍历。(文件夹:无向图邻接矩阵


//无向图邻接矩阵搜索遍历的程序代码
#include<stdio.h>
//图的邻接矩阵类型定义
const int n=8;
const int e=10;
typedef char vextype;
typedef int adjtype;
typedef struct
{
vextype vexs[n];
adjtype arcs[n][n];
}graph;
graph*g=new graph;
void creatgraph();
void dfsa(int);
int visited[n];


void main()
{
creatgraph();
int i;
while(1)
{
for(i=0;i<n;i++)
visited[i]=0;
printf("输入出发点序号(0-7),输入-1结束:");
scanf("%d",&i);
if(i==-1) break;
   dfsa(i);
}
}


//建立无向图邻接矩阵
void creatgraph()
{
int i,j,k;
char ch;
printf("输入8个顶点的字符数据信息:\n");
for(i=0;i<n;i++)
if((ch=getchar())!='\n') g->vexs[i]=ch;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g->arcs[i][j]=0;
printf("输入10条边的起、终点i,j:\n"); 
for(k=0;k<e;k++)
{
scanf("%d,%d",&i,&j); //顶点序号从0开始
g->arcs[i][j]=g->arcs[j][i]=1;
}
}


//深度优先搜索遍历


void dfsa(int i)
{
int j;
printf("node : %c \n",g->vexs[i]);
visited[i]=1;
for(j=0;j<n;j++)
if( (g->arcs[i][j] ==1) && (visited[j]==0) )
dfsa(j);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值