图最基础遍历方式有2两种
1、深度遍历
2、广度遍历
注意:图的遍历结果无论是深度优先还是广度优先都不是唯一的。
深度优先:类似树的前序遍历。
广度优先:类似树的层序遍历,与树一样也需要使用队列配合。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "queue_list.h"
#define TYPE char
#define MAX_VERTER 50
typedef struct Graph
{
TYPE* verter;
size_t size;
int edge[MAX_VERTER][MAX_VERTER];
}Graph;
// 创建图
Graph* create_graph(size_t size)
{
Graph* gra = malloc(sizeof(Graph));
gra->verter = malloc(sizeof(TYPE)*size);
gra->size = size;
for(int i=0; i<size; i++)
{
gra->verter[i] = 0;
for(int j=0; j<size; j++)
{
gra->edge[i][j] = 0;
}
}
return gra;
//memset(gra->edge,0,sizeof(int)*MAX_VERTER*MAX_VERTER);
}
// 添加点与边
bool add_verter(Graph* gra,size_t i,TYPE ver)
{
if(i >= gra->size) return false;
return gra->verter[i] = ver;
}
void show_edge(Graph* gra)
{
printf(&#