Menu
Coddy logo textTech

Agregar Vértice

Lección 4 de 14 del curso Grafos - Serie de Estructuras de Datos #9 de Coddy.

Un vértice es un punto único en el grafo. Añadir uno significa registrar su clave en el mapa vertices con una lista de vecinos vacía: existe, pero aún no tiene conexiones.

Si la clave ya está en el mapa, no hagas nada. No queremos borrar los vecinos existentes de un vértice solo porque alguien llamó a addVertex dos veces sobre él. Ese tipo de comportamiento idempotente hace que el método sea seguro de llamar desde addEdge más tarde.

Escribámoslo.

challenge icon

Desafío

Fácil

Agrega un método addVertex a la clase Graph.

Este toma un entero key y:

  • Si key no está en vertices, agrégalo con una lista de vecinos vacía.
  • Si key ya está en vertices, no hagas nada.

Pruébalo tú mismo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "graph.h"

static int _cmp_int(const void* a, const void* b) {
    int ai = *(const int*)a, bi = *(const int*)b;
    return (ai > bi) - (ai < bi);
}

int main() {
    Graph g;
    Graph_init(&g);
    char line[1024];
    while (fgets(line, sizeof(line), stdin)) {
        line[strcspn(line, "\r\n")] = '\0';
        char* cmd = strtok(line, " \t");
        if (!cmd) continue;
        if (strcmp(cmd, "verticesEmpty") == 0) { printf("%s\n", g.vertexCount == 0 ? "true" : "false"); }
        if (strcmp(cmd, "hasVertex") == 0) { char* arg = strtok(NULL, " \t"); if (arg) printf("%s\n", Graph_indexOf(&g, atoi(arg)) != -1 ? "true" : "false"); }
        if (strcmp(cmd, "addVertex") == 0) { char* arg = strtok(NULL, " \t"); if (arg) Graph_addVertex(&g, atoi(arg)); }
    }
    return 0;
}

Todas las lecciones de Grafos - Serie de Estructuras de Datos #9