⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 primdlg.cpp

📁 用于数据结构课程设计,双向链表,并且用了MFC做图形界面
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    G.vexs[7]=m_v8;
    G.vexs[8]=m_v9;
    G.vexs[9]=m_v10;
		
   for(int i=0;i<10;i++)             //初始化各条边上的权值为最大值
   for(int j=0;j<10;j++)
   G.arcs[i][j].adj=MAX;
   CString str,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10;
   str1.Format("%d",G.vexs[0]);
   str2.Format("%d",G.vexs[1]);
   str3.Format("%d",G.vexs[2]);
   str4.Format("%d",G.vexs[3]);
   str5.Format("%d",G.vexs[4]);
   str6.Format("%d",G.vexs[5]);
   str7.Format("%d",G.vexs[6]);
   str8.Format("%d",G.vexs[7]);
   str9.Format("%d",G.vexs[8]);
   str10.Format("%d",G.vexs[9]);
   str=str1+" "+str2+" "+str3+" "+str4+" "+str5+"\r\n"+str6+" "+str7+" "+str8+" "+
	   str9+" "+str10;
     if(G.vexs[0]==0||G.vexs[1]==0||G.vexs[2]==0||G.vexs[3]==0||G.vexs[4]==0||
		 G.vexs[5]==0||G.vexs[6]==0||G.vexs[7]==0||G.vexs[8]==0||G.vexs[9]==0)
		{CString a;
		a.Format("您还未输入完毕10个房间号码!请继续输入");
			SetDlgItemText(IDC_SHOW,a);
		}
  else SetDlgItemText(IDC_SHOW,str);
	
}

void CPrimDlg::OnEnter()
 
{
	
   UpdateData(true);
   CString a;
   vex tree;
    int num=0;
    MGraph G;

    G.vexs[0]=m_v1;
	G.vexs[1]=m_v2;
    G.vexs[2]=m_v3;
    G.vexs[3]=m_v4;
    G.vexs[4]=m_v5;
    G.vexs[5]=m_v6;
    G.vexs[6]=m_v7;
    G.vexs[7]=m_v8;
    G.vexs[8]=m_v9;
	G.vexs[9]=m_v10;
	
    for(int m=0;m<10 ;m++)             //初始化各条边上的权值为最大值
   for(int n=0;n<10;n++)
   G.arcs[m][n].adj=MAX;
	int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16,i17,i18,i19,i20,
		j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14,j15,j16,j17,j18,j19,j20;
	
   

	if(m_a1==0||m_a2==0||m_a3==0||m_a4==0||m_a5==0||m_a6==0||m_a7==0||m_a8==0||m_a9==0)
		SetDlgItemText(IDC_SHOW,"请至少输入9组房间号码,否则您将无法完成局域网的接线!");

    else{

	i1=tree.LocateVex(G,m_a1);
	j1=tree.LocateVex(G,m_b1);
	if(i1==10||j1==10)
    SetDlgItemText(IDC_SHOW,"您输入的第1组房间号码有错!");

    else{
		G.arcs[i1][j1].adj=m_w1;
		G.arcs[j1][i1].adj=m_w1;
		num++;
	}
	
	i2=tree.LocateVex(G,m_a2);
	j2=tree.LocateVex(G,m_b2);
	if(i2==10||j2==10)
	SetDlgItemText(IDC_SHOW,"您输入的第2组房间号码有错!");
    
    else{
	G.arcs[i2][j2].adj=m_w2;
    G.arcs[j2][i2].adj=m_w2;
    num++;	} 
	
	i3=tree.LocateVex(G,m_a3);
	j3=tree.LocateVex(G,m_b3);
	if(i3==10||j3==10)
	SetDlgItemText(IDC_SHOW,"您输入的第3组房间号码有错!");
    
	else{
    G.arcs[i3][j3].adj=m_w3;
    G.arcs[j3][i3].adj=m_w3;
	num++;}
	
	i4=tree.LocateVex(G,m_a4);
	j4=tree.LocateVex(G,m_b4);
	if(i4==10||j4==10)
	SetDlgItemText(IDC_SHOW,"您输入的第4组房间号码有错!");
    
	else{
    G.arcs[i4][j4].adj=m_w4;
    G.arcs[j4][i4].adj=m_w4;
	num++;} 
    
    i5=tree.LocateVex(G,m_a5);
	j5=tree.LocateVex(G,m_b5);
	if(i5==10||j5==10)
	SetDlgItemText(IDC_SHOW,"您输入的第5组房间号码有错!");
    
    else{
    G.arcs[i5][j5].adj=m_w5;
    G.arcs[j5][i5].adj=m_w5;
	num++;} 
	
	i6=tree.LocateVex(G,m_a6);
	j6=tree.LocateVex(G,m_b6);
	if(i6==10||j6==10)
	SetDlgItemText(IDC_SHOW,"您输入的第6组房间号码有错!");
   
    else{
    G.arcs[i6][j6].adj=m_w6;
    G.arcs[j6][i6].adj=m_w6;
	num++;}
	
    i7=tree.LocateVex(G,m_a7);
	j7=tree.LocateVex(G,m_b7);
	if(i7==10||j7==10)
	SetDlgItemText(IDC_SHOW,"您输入的第7组房间号码有错!");
   
    else{
	G.arcs[i7][j7].adj=m_w7;
    G.arcs[j7][i7].adj=m_w7;
	num++;} 
	
    
	i8=tree.LocateVex(G,m_a8);
	j8=tree.LocateVex(G,m_b8);
	if(i8==10||j8==10)
	SetDlgItemText(IDC_SHOW,"您输入的第8组房间号码有错!");
   
    else{
    G.arcs[i8][j8].adj=m_w8;
    G.arcs[j8][i8].adj=m_w8; 
	num++;}
	
    i9=tree.LocateVex(G,m_a9);
	j9=tree.LocateVex(G,m_b9);
	if(i9==10||j9==10)
	SetDlgItemText(IDC_SHOW,"您输入的第9组房间号码有错!");
    
	else 
	{
    G.arcs[i9][j9].adj=m_w9;
    G.arcs[j9][i9].adj=m_w9; 
	num++;}
    

    i10=tree.LocateVex(G,m_a10);
	j10=tree.LocateVex(G,m_b10);
	if((i10==10||j10==10)&&m_a10!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第10组房间号码有错!");

    else{
    G.arcs[i10][j10].adj=m_w10;
    G.arcs[j10][i10].adj=m_w10;
	num++;}

    i11=tree.LocateVex(G,m_a11);
	j11=tree.LocateVex(G,m_b11);
	if((i11==10||j11==10)&&m_a11!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第11组房间号码有错!");
    else{
    G.arcs[i11][j11].adj=m_w10;
    G.arcs[j11][i11].adj=m_w10;
	num++;}

    i12=tree.LocateVex(G,m_a12);
	j12=tree.LocateVex(G,m_b12);
	if((i12==10||j12==10)&&m_a12!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第12组房间号码有错!");
    else{
    G.arcs[i12][j12].adj=m_w12;
    G.arcs[j12][i12].adj=m_w12;
	num++;}

    i13=tree.LocateVex(G,m_a13);
	j13=tree.LocateVex(G,m_b13);
	if((i13==10||j13==10)&&m_a13!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第13组房间号码有错!");
    else{
    G.arcs[i13][j13].adj=m_w13;
    G.arcs[j13][i13].adj=m_w13;
	num++;}

    i14=tree.LocateVex(G,m_a14);
	j14=tree.LocateVex(G,m_b14);
	if((i14==10||j14==	10)&&m_a14!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第14组房间号码有错!");
    else{
    G.arcs[i14][j14].adj=m_w14;
    G.arcs[j14][i14].adj=m_w14; 
	num++;}

    i15=tree.LocateVex(G,m_a15);
	j15=tree.LocateVex(G,m_b15);
	if((i15==10||j15==10)&&m_a15!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第15组房间号码有错!");
    else{
    G.arcs[i15][j15].adj=m_w15;
    G.arcs[j15][i15].adj=m_w15; 
	num++;}


    i16=tree.LocateVex(G,m_a16);
	j16=tree.LocateVex(G,m_b16);
	if((i16==10||j16==10)&&m_a16!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第16组房间号码有错!");
    else{
    G.arcs[i16][j16].adj=m_w16;
    G.arcs[j16][i16].adj=m_w16;
	num++;}

    i17=tree.LocateVex(G,m_a17);
  	j17=tree.LocateVex(G,m_b17);
	if((i17==10||j17==10)&&m_a17!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第17组房间号码有错!");
    else{
    G.arcs[i17][j17].adj=m_w17;
    G.arcs[j17][i17].adj=m_w17;
	num++;}

    i18=tree.LocateVex(G,m_a18);
	j18=tree.LocateVex(G,m_b18);
	if((i18==10||j18==10)&&m_a18!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第18组房间号码有错!");
    else{
    G.arcs[i18][j18].adj=m_w18;
    G.arcs[j18][i18].adj=m_w18;
	num++;}

    i19=tree.LocateVex(G,m_a19);
	j19=tree.LocateVex(G,m_b19);
	if((i19==10||j19==10)&&m_a19!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第19组房间号码有错!");
    else{
    G.arcs[i19][j19].adj=m_w19;
    G.arcs[j19][i19].adj=m_w19;
	num++;}

    i20=tree.LocateVex(G,m_a20);
	j20=tree.LocateVex(G,m_b20);
	if((i20==10||j20==10)&&m_a20!=0)
	SetDlgItemText(IDC_SHOW,"您输入的第20组房间号码有错!");
    else{
    G.arcs[i20][j20].adj=m_w20;
    G.arcs[j20][i20].adj=m_w20;
	num++;}
	


 if(i1!=10&&j1!=10&&i2!=10&&j2!=10&&i3!=10&&j3!=10&&i4!=10&&j4!=10&&i5!=10&&j5!=10&&
       i6!=10&&j6!=10&&i7!=10&&j7!=10&&i8!=10&&j8!=10&&i9!=10&&j9!=10&&
	   (i10!=10&&j10!=10||m_a10==0)&&(i11!=10&&j11!=10||m_a11==0)&&(i12!=10&&j12!=10||m_a12==0)&&
       (i13!=10&&j13!=10||m_a13==0)&&(i14!=10&&j14!=10||m_a14==0)&&(i15!=10&&j15!=10||m_a15==0)&&
	   (i16!=10&&j16!=10||m_a16==0)&&(i18!=10&&j18!=10||m_a18==0)&&(i19!=10&&j19!=10||m_a19==0)&&
	   (i20!=10&&j20!=10||m_a20==0))

 {closedge close;
 int i,j, k=0;
 
k = tree.LocateVex (G,m_v1);                   //确定第一个输入的顶点在图G中的位置,并从该顶点出发开始建立最小生成树T
 for (j=0; j<10; j++ )               //辅助数组close初始化
 {
  if (j!=k)                               
  {
   close[j].adjvex = G.vexs[k];            
   close[j].lowcost = G.arcs[k][j].adj;    
  }
 }
  close[j].lowcost = MAX;                  //若j对应的顶点与第一个输入的顶点间没有边,则令该边上的权值为最大值           
  close[j].adjvex = '\0';                  //同时,令j对应的顶点所依附的顶点为\0
  close[k].lowcost = 0;                   //初始,U={u}
  close[k].adjvex = m_v1;
  CString text;
  text.Format("成本最低的接线方式为:");
  
            //输出成本最低的接线
             //选择其余G.vexnum-1个顶点
 
 
  CString t[MAX_VERTEX_NUM],s[MAX_VERTEX_NUM],w[MAX_VERTEX_NUM]; 
  
for (i = 1; i <10; i++)              //选择其余G.vexnum-1个顶点
 { 
  k = tree.minimum(close);                     //求出T的下一个结点:第K顶点

 
  t[i].Format("%d",close[k].adjvex);              //输出生成树的边
  
  s[i].Format("--->%d",G.vexs[k]);

  
  
  close[k].lowcost = 0;               //第K顶点并入U集
  for (j=0; j<10; j++)
  {
   if (G.arcs[k][j].adj < close[j].lowcost)           //新顶点并入U后重新选择最小边
   {
    close[j].adjvex = G.vexs[k];
    close[j].lowcost = G.arcs[k][j].adj;
   }
  }
 }
CString a;
  a=text+" "+t[1]+s[1]+"  "+t[2]+s[2]+"  "+t[3]+s[3]+"  "+t[4]+s[4]+"  "+t[5]+s[5]+"  "
		  +t[6]+s[6]+"  "+t[7]+s[7]+"  "+t[8]+s[8]+"  "+t[9]+s[9]+"  "+t[10]+s[10];

SetDlgItemText(IDC_SHOW,a);
	
	}
 }
}
	  
  
  
  
  

	

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -