-
kruskal查看全部
-
prim算法查看全部
-
最小边函数 int CMap::getMinEdge(vector<Edge>edgeVec) { int minWeight=0; int edgeIndex=0; int i=0; for(int i=0;i<edgeVec.size();i++) { if(!edgeVec[i].m_bSelected) { minWeight=edgeVec[i].m_iWeightValue; edgeIndex=i; break; } } if(minWeight==0) return -1; for(;i<edgeVec.size();i++) { if(!edgeVec[i].m_bSelected&&!m_pNodeArray[edgeVec[i].m_iNodeIndexB].m_bIsVisited)//注意不要有环路,B点不能访问过 { if(minWeight>edgeVec[i].m_iWeightValue) { minWeight=edgeVec[i].m_iWeightValue; edgeIndex=i; } } } return edgeIndex; }查看全部
-
Prime算法 void CMap::primTree(int nodeIndex) { int value=0; int edgeCount=0; vector<int>nodeVec; vector<Edge>edgeVec; cout<<m_pNodeArray[nodeIndex].m_cData<<endl; nodeVec.push_back(nodeIndex); m_pNodeArray[nodeIndex].m_bIsVisited=true;//“不要忘了” while(edgeCount<m_iCapacity-1) { int temp=nodeVec.back(); for(int i=0;i<m_iCapacity;i++) { getValueFromMatrix(temp,i,value); if(value!=0) { if(!m_pNodeArray[i].m_bIsVisited) { Edge edge(temp,i,value); edgeVec.push_back(edge); } } } int edgeIndex=getMinEdge(edgeVec); edgeVec[edgeIndex].m_bSelected=true; cout<<edgeVec[edgeIndex].m_iNodeIndexA<<"----"<<edgeVec[edgeIndex].m_iNodeIndexB<<" "; cout<<edgeVec[edgeIndex].m_iWeightValue<<endl; m_pEdge[edgeCount]=edgeVec[edgeIndex]; edgeCount++; int nextNodeIndex=edgeVec[edgeIndex].m_iNodeIndexB; nodeVec.push_back(nextNodeIndex); m_pNodeArray[nextNodeIndex].m_bIsVisited=true; cout<<m_pNodeArray[nextNodeIndex].m_cData<<endl; } }查看全部
-
图的基本函数查看全部
-
图的存储办法查看全部
-
最小生成树的两种算法查看全部
-
深度优先搜索(类似树的前序遍历)查看全部
-
广度优先搜索(按层搜索)查看全部
-
邻接多重表(无向图)的边和顶点的内容查看全部
-
十字链表的弧和顶点查看全部
-
逆邻接表:顶点中存有入弧的头指针,弧中装弧尾的顶点索引查看全部
-
邻接表查看全部
-
无向图的邻接矩阵(它也是对称矩阵)查看全部
-
有向图的领接矩阵查看全部
举报
0/150
提交
取消