#include<stdio.h>
#include<stdlib.h>
#define MaxVex 255
#define TRUE 1
#define FALSE 0
typedef char VertexType; //顶点类型
typedef int Bool;
Bool visited[MaxVex]; //全局数组,记录图中节点访问状态
typedef struct EdgeNode //边表节点
{
int adjvex; //该邻接点在顶点数组中的下标
struct EdgeNode *next; //链域 指向下一个邻接点
} EdgeNode;
typedef struct VertexNode //头节点
{
VertexType data; //顶点信息
EdgeNode *firstedge; //边表头指针(指向第一条依附于该顶点的弧的指针)
} VertexNode,AdjList[MaxVex]; //顶点数组(结构体数组)
typedef struct Graph
{
AdjList adjList;
int numVertexes,numEdges; //图中当前的结点数以及边数
} Graph,*GraphAdjList;
/** 队列定义及相关操作(广度遍历会用到此循环队列) **/
typedef struct LoopQueue
{
int data[MaxVex];
int front,rear;
} LoopQueue,*Queue; //队列结构
void initQueue(Queue &Q)
{
Q->front=Q->rear=0;
}
Bool QueueEmpty(Queue &Q)
{
if(Q->front == Q->rear)
{
return TRUE;
}
else
{
return FALSE;
}
}
Bool QueueFul