资源简介
无向图
数据结构上机作业
图用的是邻接矩阵表示方法
编译运行成功
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
//去边法构造最小生成树
typedef struct graph{
int vertexnumedgenum;
int matrix[100][100]; //坑上存weight
}graph;
typedef struct edge{
int weigh;
int pver1pver2;
int flag; //flag=1被找过,flag=2没被找过
}edge;
int Findmaxwei(edge* graph&);
void Maketree(graph&int*);
int IfOKtoRemove(int edge *graph & );
int main()
{
int ik;
graph G;
printf(“输入图的顶点数:“);
scanf(“%d“&G.vertexnum);
printf(“输入边数:“);
scanf(“%d“&G.edgenum);
printf(“输入邻接矩阵:\n“);
int vert[G.vertexnum];
for(i=0;i for(k=0;k scanf(“%d“&G.matrix[i][k]);
for(i=0;i vert[i]=i; //数组每个坑代表一个vertex,坑里的值为点的等价类号
Maketree(Gvert);
return 0;
}
void Maketree(graph &Gint* vert)
{
int ikj=0en=G.edgenummednum=G.edgenum; //en= num of edges remained
edge Edge[G.edgenum];
for(i=0;i for(k=i;k {
if(G.matrix[i][k]!=0)
{
Edge[j].flag=2;
Edge[j].pver1=i;
Edge[j].pver2=k;
Edge[j].weigh=G.matrix[i][k];
j++;
}
} //j= edgenum
while(en>G.vertexnum-1)
{
k=Findmaxwei(Edge G); //k=newver的最小权边在 Edge里的下标
if(k==-1) break;
Edge[k].flag
- 上一篇:svm训练图像
- 下一篇:分别用栈和递归来实现十进制转换为任一进制
评论
共有 条评论