(13)最小生成树.cpp
上传用户:wxj1219
上传日期:2013-01-31
资源大小:6k
文件大小:2k
源码类别:

数据结构

开发平台:

C/C++

  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<stdio.h>
  4. int NodeCount;
  5. char Node[20];
  6. char Graph[20][20];
  7. char Queue[20];
  8. char Checked[20];
  9. char Locate(char Char)
  10. {
  11. char Temp;
  12. for(Temp=0;Temp<NodeCount;Temp++)
  13. if(Node[Temp]==Char)
  14. break;
  15. return Temp;
  16. }
  17. void main()
  18. {
  19. char Temp1,Temp2;
  20. int Temp3;
  21. char min,mintemp,mintemp1;
  22. clrscr();
  23. for(Temp2=0;Temp2<20;Temp2++)
  24. for(Temp1=0;Temp1<20;Temp1++)
  25. Graph[Temp2][Temp1]=0;
  26. for(Temp1=0;Temp1<20;Temp1++)
  27. {
  28. Queue[Temp1]=0;
  29. Checked[Temp1]=0;
  30. }
  31. cout<<"Input the node count:";
  32. cin>>NodeCount;
  33. cout<<"Input the node:";
  34. for(Temp1=0;Temp1<NodeCount;Temp1++)
  35.   cin>>Node[Temp1];
  36. cout<<"Input the link"<<endl;
  37. Temp1=0;
  38. while(1)
  39. {
  40. cout<<"Input the first node:";
  41. cin>>Temp1;
  42. cout<<"Input the second node:";
  43. cin>>Temp2;
  44. cout<<"Input the weight:";
  45. cin>>Temp3;
  46. if(Temp1=='$')
  47. break;
  48. Temp1=Locate(Temp1);
  49. Temp2=Locate(Temp2);
  50. Graph[Temp2][Temp1]=Temp3;
  51. Graph[Temp1][Temp2]=Temp3;
  52. }
  53. for(Temp2=0;Temp2<NodeCount;Temp2++)
  54. {
  55. for(Temp1=0;Temp1<NodeCount;Temp1++)
  56. cout<<(int)Graph[Temp2][Temp1]<<" ";
  57. cout<<endl;
  58. }
  59. Queue[0]=0;
  60. Checked[0]=1;
  61. for(Temp1=1;Temp1<NodeCount;Temp1++)
  62. {
  63. min=100;
  64. for(Temp2=0;Temp2<Temp1;Temp2++)
  65. for(Temp3=0;Temp3<NodeCount;Temp3++)
  66. if((!Checked[Temp3])&&(Graph[Queue[Temp2]][Temp3]>0)&&(Graph[Queue[Temp2]][Temp3]<min))
  67. {
  68. min=Graph[Queue[Temp2]][Temp3];
  69. mintemp=Temp3;
  70. mintemp1=Queue[Temp2];
  71. }
  72. cout<<Node[mintemp1]<<"->"<<Node[mintemp]<<endl;
  73. Checked[mintemp]=1;
  74. Queue[Temp1]=mintemp;
  75. }
  76. }