哈密尔顿图遍历void HaMiTonian(int m) /* 哈密尔顿图的遍历 */{ if(m>8) return;L:NextValue(m);if(x[m]==0) return;if(m==7&&G.arcs[0][x[8]-1].adj!=10000) display(); else HaMiTonian(m+1); goto L; } void NextValue(int k) {int j;l:x[k]=(x[k]+1

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 01:30:18

哈密尔顿图遍历
void HaMiTonian(int m) /* 哈密尔顿图的遍历 */
{
if(m>8) return;
L:NextValue(m);
if(x[m]==0) return;
if(m==7&&G.arcs[0][x[8]-1].adj!=10000) display();
else HaMiTonian(m+1);
goto L;
}
void NextValue(int k)
{
int j;
l:x[k]=(x[k]+1)%10;
if(x[k]==0) return;
if(G.arcs[x[k-1]-1][x[k]-1].adj!=10000)
{
for(j=0;j

解释比较麻烦,我这有个参考程序你看下,
/*校园导游程序:
用无向网表示学校的校园景点平面图.
图中顶点表示主要景点,存放景点的编号,名称,简介等信息.
图中的边表示景点间的道路,存放路径长度等信息.
要求:(1)查询各景点的相关信息.
(2)查询图中任意两个景点间的最短路径.
(3)查询图中任意两个景点间的所有路径.*/
#include
#include
#include
#define MAXV 20/*最多顶点个数*/
#define MAXSIZE 20/*字符串成员name的最大长度*/
#define MAXLEN 500/*字符串成员content的最大长度*/
#define INF 32767/*用32767表示∞*/
int a=0;/*全局变量,用来记录每对顶点之间的所有路径的条数*/
typedef struct
{int num;/*顶点编号*/
char name[MAXSIZE];/*顶点名称*/
char content[MAXLEN];/*顶点信息*/
}VertexType;/*顶点的结构定义*/
typedef struct
{int edges[MAXV][MAXV];/*网的邻接矩阵存储*/
int vexnum,arcnum;/*网中的顶点数和边数*/
VertexType vexs[MAXV];/*顶点向量*/
}MGraph;/*网的结构定义*/
int visited[MAXV];/*全局数组,用来记录各顶点被访问的情况*/
int p[MAXV];/*全局数组,用来存放路径上的各顶点*/
void path(MGraph g,int i,int j,int k)
/*确定路径上第k+1个顶点的序号*/
{int s;
if(p[k]==j)/*找到一条路径*/
{
a++;/*路径的条数值加1*/
printf("第%d条:",a);
for(s=0;s