图结构
#include<stdio.h>
#define MAX 20
typedef struct Grap{
char v[MAX];
int e[MAX][MAX];
int vc,ec;
}G,*grap;
int visited[MAX];
G *creat(char a[],int m,int n){
G t1,*t;
t=&t1;
t->vc = m;
t->ec = n;
int i,j,k,value;
for(i=0;i<t->vc;i++) t->v[i]=a[i];
for(i=0;i<t->vc;i++){
for(j=0;j<t->vc;j++) t->e[i][j] = 0;
}
for(k=0;k<t->ec;k++){
printf("输入边的两个顶点的序号():");
scanf("%d %d %d",&i,&j,&value);
t->e[i][j] = value;
t->e[j][i] = value;
}
for(i=0;i<t->vc;i++){
for(j=0;j<t->vc;j++) printf("%d ",t->e[i][j]);
printf("\n");
}
return t;
}
void DFshow(G *t,int n){
int j;
printf("%d\n",t->vc);
if(n>=t->vc) {
printf("输入非法\n");
}else{
printf("%c ",t->v[n]);
visited[n] = 1;
for(j=0;j<t->vc;j++){
if(t->e[n][j] > 0 && visited[j] == 0)
DFshow(t,j);
}
}
}
void BFshow(G *t,int n){
int front = -1,rear = -1,j;
char Q[MAX];
if(n>=t->vc) printf("输入非法\n");
else {
printf("%c",t->v[n]);
visited[n] = 1;
Q[++rear] = n;
while(front != rear){
n = Q[++front];
for(j=0;j<t->vc;j++)
if(t->e[n][j] > 0 && visited[j] == 0){
printf("%c ",t->v[j]);
visited[j] = 1;
Q[++rear] = j;
}
}
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-51692.html