邻接矩阵实现图的深度优先搜索(1)
生活随笔
收集整理的這篇文章主要介紹了
邻接矩阵实现图的深度优先搜索(1)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
鄰接矩陣實(shí)現(xiàn)圖的深度優(yōu)先搜索(1) /************************************************************/
/********************圖的深度優(yōu)先搜索***********************/
/********************用鄰接矩陣來實(shí)現(xiàn)***********************/
/************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define N 8
typedef char ElemType;
static ElemType vertex[N];
static int edge[N][N];
int flag[N]; //用來標(biāo)示每個(gè)結(jié)點(diǎn)是否遍歷過void CreatGraph(ElemType vertex[N],int edge[N][N])
{int i = 0,j = 0;char c;printf("請輸入結(jié)點(diǎn)中存放的數(shù)據(jù):\n");scanf("%c",&c);while(i < N){if(c == '\n'){break;}else{vertex[i++] = c;scanf("%c",&c);}}// printf("It has gone to here:\n");printf("請輸入圖中各個(gè)邊的狀態(tài),數(shù)字1表示有連接,數(shù)字0表示無連接:\n");for( i = 0;i < N;i++ ){for( j = i;j < N;j++ ){printf("\n%c--->%c的連接狀態(tài)為:",vertex[i],vertex[j]);scanf("%d",&edge[i][j]);edge[j][i] = edge[i][j];}}for( i = 0;i < N;i++ ){flag[i] = 0;}for( i = 0;i < N;i++ ){for( j = 0;j < N;j++ ){printf("%d ",edge[i][j]);}printf("\n");}
}void DepthFirstSearch(int i)//i為要開始的額結(jié)點(diǎn)i = 0為A開始
{int j = 0;printf("%c ",vertex[i]);flag[i] = 1;for(j = 0;j < N;j++){if(flag[j] == 0 && edge[i][j] == 1){DepthFirstSearch(j);}}
}int main()
{int x = 0;//x =0~7分別表示從第一個(gè)輸入的結(jié)點(diǎn)~最后一個(gè)輸入的結(jié)點(diǎn)開始遍歷CreatGraph(vertex,edge);printf("深度優(yōu)先搜素的順序?yàn)?#xff1a;\n");DepthFirstSearch(x);return 0;
}
posted on 2014-12-18 21:29 BeatificDevin 閱讀(...) 評論(...) 編輯 收藏
轉(zhuǎn)載于:https://www.cnblogs.com/devinblog/p/4172727.html
總結(jié)
以上是生活随笔為你收集整理的邻接矩阵实现图的深度优先搜索(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成长的路上,痛并快乐着
- 下一篇: 人生九度