Tambahkan Simpul
Pelajaran 4 dari 14 dalam kursus Graf, Seri Struktur Data #9 di Coddy.
Sebuah verteks adalah satu titik dalam graf. Menambahkannya berarti mendaftarkan kuncinya di map vertices dengan daftar tetangga kosong: verteks itu ada, tetapi belum memiliki koneksi.
Jika kuncinya sudah ada di map, jangan lakukan apa pun. Kita tidak ingin menghapus tetangga yang sudah dimiliki verteks hanya karena seseorang memanggil addVertex padanya dua kali. Perilaku idempoten seperti ini membuat method tersebut aman dipanggil dari addEdge nanti.
Mari kita tulis.
Tantangan
MudahTambahkan method addVertex ke class Graph.
Method ini menerima integer key dan:
- Jika
keytidak ada divertices, tambahkankeydengan list tetangga yang kosong. - Jika
keysudah ada divertices, jangan lakukan apa pun.
Coba sendiri
#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;
}
Semua pelajaran di Graf, Seri Struktur Data #9
2Proyek Graf
Class GrafTambahkan SimpulTambahkan SisiApakah Ada SisiDapatkan TetanggaHapus SisiUkuranLatihan sendiri: Compiler C online