图的深度优先遍历(邻接表存储)

本文介绍了使用邻接表数据结构进行图的深度优先遍历,其思路类似于二叉树的先序遍历,通过递归算法实现。详细原理及C语言代码示例在内容中给出。
摘要由CSDN通过智能技术生成

深度优先遍历的思路,类似于二叉树的先序遍历的递归算法的过程。原理代码说得比较清楚:

void  DFS(int v)
{
	node_ptr p;
	visited[v] = TRUE;
	Visit(v);
	for(p=graph[v];p;p=p->link)
		if(!(visited[p->vertex]))
			DFS(p->vertex);
}
完整的实现:

#include <stdio.h>
#include <malloc.h>

using namespace std;

#define MAX_VERTEX_NUM 50 
#define FALSE 0
#define TRUE 1

typedef struct node* node_ptr;
typedef struct node
{
	int vertex;
	node *link;
}node;
node_ptr graph[MAX_VERTEX_NUM];
short int visited[MAX_VERTEX_NUM];


void ResetVisited(short int visited[],int node_num)
{
	for (int i=0;i<node_num;i++)
		visited[i] = FALSE;
}
void BuildGraph(node_ptr *graph,int node_num)
{
//	InitGraph(graph,node_num);
	int v;
	for(int i=0;i<node_num;i++)
	{
		while(1)
		{	
			scanf("%d",&v);
			if(v == -1)
	
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值