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