#include <stdio.h> #include<stdlib.h> struct node { int vertex ; struct node *link ; }; #define TRUE 1 #define FALSE 0 typedef struct node *graph ; struct node head [ 9 ] ; int visited [ 9 ] ; void CreateGraph( int *node , int num ) { graph ptr ; graph newnode ; int from ; int to , i ; for ( i = 0 ; i < num ; i++) { from = node[ i * 2] ; to = node [ i * 2 +1 ] ; newnode = (graph)malloc(sizeof(struct node)); newnode ->vertex = to ; newnode ->link = NULL ; ptr = &(head [ from ]); while ( ptr -> link != NULL ) { ptr = ptr ->link ; } ptr->link = newnode ; } } void DFS( int v) { graph ptr ; visited[ v ] = TRUE ; printf( " v%d " ,v ) ; ptr = head[ v ].link ; while( ptr != NULL ) { if ( visited[ ptr->vertex ] == FALSE ) { DFS( ptr->vertex ) ; } ptr = ptr ->link ; } } void main() { int node[20][2]= { {1, 2}, {2, 1}, {1, 3}, {3, 1}, {2, 4}, {4, 2}, {2, 5}, {5, 2}, {3, 6}, {6, 3}, {3, 7}, {7, 3}, {4, 8}, {8, 4}, {5, 8}, {8, 5}, {6, 8}, {8, 6}, {7, 8}, {8, 7} }; CreateGraph( node , 20 ) ; puts("图的深度遍历结果:") ; DFS( 3 ) ; puts( " " ); }
深度优先搜索算法
最新推荐文章于 2024-01-23 10:27:57 发布