我在大二上学期期末时候写的,大概2014年1月4号左右。我写在博客里一是为我以后复习所用,二是希望对需要的人有所帮助。
问题描述:
设计一个程序,输入一个无向图的顶点(编号 1,2,3···n)和边,使用邻接表存储结构存储该图,设定起始顶点后,按深度优先遍历算法遍历该图。输出顶点的访问次序。
#include #include
#include
#include
#define MAXLIN 40
/*----邻接表存储结构---*/
//-----------------表节点存储结构----------
typedef struct ArcNode{ //结构体
int adjvex; //表节点编号信息
struct ArcNode *next;
}ArcNode;
//-----------------头结点存储结构-----------
typedef struct VNode{
char vertex[5]; //节点信息
ArcNode *link;
int id; //编号
}VNode;
//边节点
typedef struct Bian{ //为了方便 加的一个结构体
char one[5]; //存储边的第一个节点
char two[5]; //存储边的第二个节点
}Bian;
typedef struct{
VNode adjList[MAXLIN]; //顺序存储 头结点 头结点的数组
int vexnum; //顶点数
int arcnum; //边数
Bian bian[MAXLIN]; //边的数组
int kind; //图的存储种类
}ALGraph;
int visit[MAXLIN];
//返回是第几个顶点
int PanDuan(char n[5],ALGraph &G)
{
for(int i=0;i
{
if(strcmp(n,G.adjList[i].vertex)==0)
return i;
}
printf("没有找到相关顶点,图的信息有误!\n");
return 0;
}
//输入图的相关信息
ALGraph InPut(ALGraph G)
{
int i;
char haha[4];
printf(