[prev] 21 [next]

Array-of-edges Representation (cont)

Implementation of edge insertion/removal:

void insertE(Graph g, Edge e)
{
   assert(g != NULL && g->nE < g->n);
   int i, nE = g->nE;
   for (i = 0; i < nE; i++)
      if (eqE(e,g->edges[i])) break;
   if (i == nE)
      g->edges[g->nE++] = e;
}
void removeE(Graph g, Edge e)
{
   assert(g != NULL);
   int i, nE = g->nE;
   for (i = 0; i < nE; i++)
      if (eqE(e,g->edges[i])) break;
   if (i < nE) {
      g->edges[i] = g->edges[nE-1];
      g->nE--;
   }
}