图的邻接表存储结构

#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;
}