Graphクラス
Coddyの「グラフ - データ構造シリーズ #9」コースのレッスン 3/14。
Graphクラスは、単一のフィールドであるverticesを中心に構築されています。これは隣接リストです。つまり、各頂点のキーからその隣接ノードのリストへのマップです。後で追加するすべての操作(エッジの追加、隣接ノードのリストアップ、エッジの削除)は、このマップに対する小さな変更にすぎません。
コンストラクタは、頂点もエッジもない空の状態でグラフを開始します。したがって、マップは単なる空のマップです。次のレッスンで追加するメソッドによって、これが拡張されていきます。
チャレンジ
簡単入力引数を持たないコンストラクタを備えた Graph クラスを作成してください。
単一のフィールド vertices を空のマップ(または、使用する言語におけるキーとリストの対応関係を持つ隣接マップに相当するもの)として初期化してください。
自分で試してみよう
#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"); }
}
return 0;
}