• 大小: 3KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: 去边法  

资源简介

无向图 数据结构上机作业 图用的是邻接矩阵表示方法 编译运行成功

资源截图

代码片段和文件信息

#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

评论

共有 条评论