圖的深度優先算法

圖的鄰接表存儲結構

#include<iostream>
#include<stdlib.h> 
#define maxsize 100
using namespace std;
int visit[maxsize]={0};//初始化全爲0 
//鄰接矩陣,順序存儲 
typedef struct{
	int no;//頂點編號 
	char info;//頂點其他信息 
}VertexType;
//圖的鄰接矩陣
typedef struct{
	int edges[maxsize][maxsize];
	int n,e;
	VertexType vex[maxsize]; 
}MGraph;//嵌套結構體 ,線性結構 

//建立一個單鏈表,每個單鏈表的第一個結點存放有關頂點信息 
//鄰接表,鏈式存儲 
typedef struct ArcNode{
	int adjvex;
	struct ArcNode *nextarc;//指向下一條邊的指針
	int info; 
}ArcNode;//子單鏈表 

typedef struct{
	char data;//頂點信息char
	ArcNode *firstarc;//指向第一條邊的指針 
}VNode;//線性
 
typedef struct{
	VNode adjlist[maxsize];
	int n,e;
}AGraph;//鄰接表 


int Visit(int &v){
	cout<<v<<endl;
	return v;
}//訪問打印

//DFS深度優先 
int DFS(AGraph *G,int v){//v是點編號 
	ArcNode *p;
	visit[v]=1;//1訪問,0未訪問 
	Visit(v);
	p=G->adjlist[v].firstarc;//指向頂點V的第一條邊 
	while(p!=NULL){
		if(visit[p->adjvex]==0){
		//爲0未訪問則指向下一頂點,遞歸訪問 
		DFS(G,p->adjvex);
		p=p->nextarc;//指向下一個 
	} 
	return 1;
}

int main(){
	system("color 3");
	return 0;
} 
發佈了84 篇原創文章 · 獲贊 108 · 訪問量 7909
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章