ALGraph* InitGraph(ALGraph* g, int number)创建了完全无向图
ALGraph* CreatTestGraph(ALGraph *g)创建了测试用有向图
ALGraph* InitGraph(ALGraph* g, int number) 实现了完全无向图的生成
BFS(ALGraph *g)与DFS(ALGraph *g)实现了图的广度与深度优先搜索
g是生产的完全无向图
g2是测试用的有向图,如下所示:
邻接表中: 1 ->2 ->4 2->3 3->6 4->3->5 5->7->8
6->NULL 7->6->9 8->NULL 9->NULL
可知:
BFS: 1 2 4 3 5 6 7 8 9
DFS: 1 2 3 6 4 5 7 9 8
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 30
typedef struct ArcNode //边表
{
int adjvex;
struct ArcNode* next;
}ArcNode;
typedef struct VNode{ //点表
int data;
ArcNode * first;
}VNode;
typedef struct ALGraph //邻接表
{
VNode* vertcies[MAXSIZE];
int vexnum,arcnum;
}ALGraph;
typedef struct Queue //队列及相关操作
{
VNode *data[MAXSIZE];
int rear,front;
}Queue;
Queue* initQueue(){
Queue* p = (Queue *)malloc(sizeof(Queue));
p->rear=p->front=0;
return p;
}
int isQueueEmpty(Queue *p){
if(p->rear==p->front){
return 1;
}
return -1;
}
int enQueue(Queue *p,VNode *node){
if((p->rear+1)%MAXSIZE==p->front){
printf("full error,please enlar