设计内容:
在n个城市(n>=5)之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用(邻接表和邻接矩阵)两种,采用课本上的两种求解算法。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define INFINITY 65535
#define OK 1
#define ERROR -1
#define OVERFLOW -2
#define MAXVERTY 30
#define MAX 20
typedef int VRtype;
typedef int Vertextype;
typedef struct ArcCell
{
VRtype adj; //顶点关系的类型
}ArcCell,AdjMatriex[MAXVERTY][MAXVERTY];;
//邻接矩阵的定义
typedef struct
{
Vertextype vexs[MAX]; //顶点向量
AdjMatriex arcs; //邻接矩阵
int vexnum,arcnum; //图的顶点数与边数
}Mgraph,hushu; //对于邻接矩阵的建立
typedef struct ArcNode
{
Vertextype adjvex; //邻接表阵在头结点数组中的位置
struct ArcNode *nextarc; //指向下一个表节点
}ArcNode;
typedef struct VNode
{
Vertextype data; //顶点信息
struct ArcNode *firstarc; //指向第一条依附该顶点的弧的指针
}VNode, Adjlist[MAX];
//邻接表类型的定义
typedef struct
{
Adjlist vexs;
int vexnum,arcnum; //点数和边数
}ALgraph; //对于邻接表的建立
typedef struct Edge
{
int begin; //起点的
int end; //终点的
int weight; //权值的
}Bian;
int LocateAL(ALgraph G, int v)
{
for(int i=0; i<G.vexnum; ++i)
{
if(G.vexs[i].data == v)
{
return i;
}
}
} //对于邻接表的定位
int LocateVex(hushu G, int v)