#pragma once
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#dene maxsize 100
using namespace std;
int visited[maxsize];//记录每个顶点是否被访问,访问过置 1,没访问置 0
int DFS_Count;//连通部件个数,用于测试无向图是否连通,DFS_Count=1 表示只有一个连通部件,
所以整个无向图是连通的
/****边结点****/
struct node{
int num;//序号
int weight;//权值
struct node* next;//指向边界点
};
/****头结点****/
struct headnode{
int data;//头结点的数据
node *next;//指向边结点的指针
};
/****存放头节点数组****/
struct HeadArray{
int vernum;//顶点个数
int edgnum; //边数
headnode headnodelist[maxsize];
};
/****广度优先遍历队列****/
struct queue{
int data[maxsize + 20];
int head;//对头
int tail;//队尾
};
class tu{
public:
tu();
int create(HeadArray*g);//创建无向图
void reqz(HeadArray*g);//返回权值
int locate(HeadArray*g, int a);//定位数据为 a 的头结点在数组中的位置
void insert(HeadArray*g);//添加边
void deleb(HeadArray*g);//删除边
void nd(HeadArray*g, int a);//查找邻接顶点
void dfs(HeadArray*g, int v);
int judrep(HeadArray*g, int a, int b);//判断重复边
void travel(HeadArray*g);//深度优先
void enterqueue(int v);//入队列
int empty();//判断队列是否为空
int deletequeue();//取出队首元素
void bfs(HeadArray*g);//广度优先
HeadArray *reHeadArray()//返回数组
{
return &a;
}