圖的鄰接表存儲結構
#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;
}