图的邻接表存储结构
#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;
}