#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 发布