正在加载图片...
第8章图 pHeap[=Temp; template <class Type> void MinHeapType>: Insert const Type &ele SIZe++: if( Currents HMaxSize )return; FilterUp( CurrentSize ) template <class Type> void MinHeap<Type>: RemoveMin( Type &Min)( Min= pHeap[0; pHeap[o]=pHeap[CurrentSize]: Filter Down(0, CurrentSize ) template <class Type> void MinHeap<Type>: Output(( for ( int 1=0; i < CurrentSize; i++ )cout < pHeap<< cout <<endI: void Graph: Init Graph()& Edge00j=-1; Edge[oJ[1]=28; Edge[0J[2]=-1; Edge[0J3]=-1; Edge[04]=-1: Edge[0J[5]=10 Edge[016=-1; Edge[J[1]=-1; Edge[ 1][2]=16; Edge[1[ Edge[2][2]=-1;Edge[2][3=12;Edge[2][4]=-1;Fdge[2][S=-1;Fdge[2][6=-1; Edge3][3]=-1;Fdge34=22;Edge[3][5]=-1;Fdge[3]6=18; Edge 444=-1; Edge 45=25; Edge 6 Edge515]=-1; Edge516=1; Edge[66=-1; for(inti=l;i<6;计++) for int j=0;j<1;++) Edgen0= Edgell; void Graph: Kruskal()t GraphEdge int VerticesNum= Get VerticesNum ( MinHeap<GraphEdge> heap( VerticesNum *VerticesNum ) UFSets set( VerticesNum ) for(j=i+1:j< VerticesNum; j++)第 8 章 图 104 pHeap[i] = Temp; } template <class Type> void MinHeap<Type> :: Insert ( const Type &ele ) { CurrentSize++; if ( CurrentSize == HMaxSize ) return; pHeap[CurrentSize] = ele; FilterUp ( CurrentSize ); } template <class Type> void MinHeap<Type> :: RemoveMin ( Type &Min ) { if ( CurrentSize < 0 ) return; Min = pHeap[0]; pHeap[0] = pHeap[CurrentSize--]; FilterDown ( 0, CurrentSize ); } template <class Type> void MinHeap<Type> :: Output ( ) { for ( int i = 0; i <= CurrentSize; i++ ) cout << pHeap[i] << " "; cout << endl; } void Graph :: InitGraph( ) { Edge[0][0] = -1; Edge[0][1] = 28; Edge[0][2] = -1; Edge[0][3] = -1; Edge[0][4] = -1; Edge[0][5] = 10; Edge[0][6] = -1; Edge[1][1] = -1; Edge[1][2] = 16; Edge[1][3] = -1; Edge[1][4] = -1; Edge[1][5] = -1; Edge[1][6] = 14; Edge[2][2] = -1; Edge[2][3] = 12; Edge[2][4] = -1; Edge[2][5] = -1; Edge[2][6] = -1; Edge[3][3] = -1; Edge[3][4] = 22; Edge[3][5] = -1; Edge[3][6] = 18; Edge[4][4] = -1; Edge[4][5] = 25; Edge[4][6] = 24; Edge[5][5] = -1; Edge[5][6] = -1; Edge[6][6] = -1; for ( int i = 1; i < 6; i++ ) for ( int j = 0; j < i; j ++ ) Edge[i][j] = Edge[j][i]; } void Graph :: Kruskal( ) { GraphEdge e; int VerticesNum = GetVerticesNum ( ); int i, j, count; MinHeap<GraphEdge> heap ( VerticesNum *VerticesNum ); UFSets set ( VerticesNum ); for ( i = 0; i < VerticesNum; i++ ) for ( j = i + 1; j < VerticesNum; j++ )
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有