예제 #1
0
void GraphNode :: printAdjacentNodes(){
	for (int a =0; a< adjacents.size(); a++){
		GraphNode * tmp = adjacents.at(a);
		printf("neighbors %i 'th id is: %i \n", a, tmp->getnodeid());
	}
	
	
}
예제 #2
0
void Graph :: preprocess(){
	//we want all the edges to have pointer to the nodes its connecting
	//we also want all nodes to know about its adjacency nodes
	//we will do so by traversing all the edges
	for (int e=0; e< edgelist.size(); e++) {
		GraphEdge * thedg = edgelist.at(e);
		int frid = thedg->from;
		int toid = thedg->to;
		
		bool foundfrom = false;
		bool foundto = false;
		GraphNode * fromend;
		GraphNode * toend;
		//find these nodes in the adjlist
		for (int a=0; a<adjlist.size(); a++) {
			GraphNode * nd = adjlist.at(a);
			if (!foundfrom && nd->getnodeid() == frid) {
				fromend = nd;
				thedg->setFrom(fromend);
				fromend->addAdjacentEdge(thedg);
				foundfrom = true;
			}
			if (!foundto && nd->getnodeid() == toid) {
				toend = nd;
				thedg->setTo(toend);
				toend->addAdjacentEdge(thedg);
				foundto = true;
			}
			if(foundto && foundfrom){
				fromend -> addAdjacentNode(toend);
				toend->addAdjacentNode(fromend);
				
				break;
			}
			
		}
	}
}