图的深度优先遍历--邻接表实现

2014-11-24 12:43:43 · 作者: · 浏览: 3

这里用邻接表实现图的深度优先遍历,采用递归实现。

#include
  
   
using namespace std;
#define VERTEXNUM 5//结点数
struct  edgenode  
{  
    int to;  
    int weight; // 边的权值
    edgenode *next;  
};  
struct vnode  
{  
    int from;  
    edgenode *first;  
};
void createGraph(vnode *adjilist, int start, int end,int weight);
void displayGraph(vnode *adjilist,int nodeNum);
void DFT(vnode *adjilist,int* vertexStatusArr,int nodeNum);
void DFTcore(vnode *adjilist,int i,int* vertexStatusArr);

int main(void){
		
		//创建图
	    vnode adjilist[VERTEXNUM];
		int nodeNum=VERTEXNUM;
		for(int i=0;i
   
    to=end; p->weight=weight; p->next=adjilist[start].first; adjilist[start].first=p; } //打印存储的图 void displayGraph(vnode *adjilist,int nodeNum) { int i,j; edgenode *p; for(i=0;i
    
     to<<')'<
     
      next; } } } //深度优先遍历 void DFT(vnode *adjilist, int* vertexStatusArr,int nodeNum) { printf("start BFT graph:\n"); int i; for(i=0;i
      
       next) { DFTcore(adjilist, p->to, vertexStatusArr); } }
      
     
    
   
  

时间复杂度为O(V+E)。