void _AddVertexToDegList(ColorVerticesContext *context, graphP theGraph, int v, int deg) { if (deg > 0) { if (_IsConstantTimeContractible(context, v)) context->degListHeads[deg] = LCPrepend(context->degLists, context->degListHeads[deg], v); else context->degListHeads[deg] = LCAppend(context->degLists, context->degListHeads[deg], v); context->numVerticesToReduce++; } context->degree[v] = deg; }
void _K33Search_CreateDFSTreeEmbedding(graphP theGraph) { K33SearchContext *context = NULL; gp_FindExtension(theGraph, K33SEARCH_ID, (void *)&context); if (context != NULL) { // When searching for K_{3,3} homeomorphs, we need the // list of DFS children for each vertex, which gets lost // during the initial tree embedding (each DFS tree child // arc is moved to the root copy of the vertex) if (theGraph->embedFlags == EMBEDFLAGS_SEARCHFORK33) { int I, J, N; N = theGraph->N; for (I=0; I<N; I++) { J = gp_GetFirstArc(theGraph, I); // If a vertex has any DFS children, the edges // to them are stored in descending order of // the DFI's along the successor arc pointers, so // we traverse them and prepend each to the // ascending order sortedDFSChildList while (theGraph->G[J].type == EDGE_DFSCHILD) { context->V[I].sortedDFSChildList = LCPrepend(context->sortedDFSChildLists, context->V[I].sortedDFSChildList, theGraph->G[J].v); J = gp_GetNextArc(theGraph, J); } } } // Invoke the superclass version of the function context->functions.fpCreateDFSTreeEmbedding(theGraph); } }
void LCInsertBefore(listCollectionP listColl, int theAnchor, int theNewNode) { LCPrepend(listColl, theAnchor, theNewNode); }