2 Star 0 Fork 0

qcliu / Clib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
testgraph.c 3.08 KB
一键复制 编辑 原始数据 按行查看 历史
qcliu 提交于 2015-02-11 09:49 . prev and succ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "graph.h"
typedef struct person
{
char* name;
char* age;
}Person;
static void throwException(char* excp_info)
{
printf("Exception: %s\n", excp_info);
exit(0);
}
/*
* Visiualized the graph by DOT. First gen a dot file, after obtain
* the png, delet the dot file.
* @qcliu 2015/02/09
*/
void visiualize(Graph* graph)
{
//filename = graph->name.dot
char* filename = (char*)malloc(strlen(graph->name) + 5);
strcpy(filename, graph->name);
strcat(filename, ".dot");
FILE* fp = fopen(filename, "a");
if (fp == NULL)
throwException("fopen error!");
fprintf(fp, "digraph G\n{\n");
LNode* lnode = GETLINK(graph->vnode)->next;
while (lnode != NULL)
{
VNode* current_vnode = lnode->data;
Person* person = current_vnode->data;
LNode* current_edge = GETLINK(current_vnode->edge)->next;
while(current_edge != NULL)
{
Edge* current_edge0 = current_edge->data;
VNode* to_vnode = current_edge0->to;
Person* to_person = to_vnode->data;
fprintf(fp, "%s->%s;\n", person->name, to_person->name);
current_edge = current_edge->next;
}
lnode = lnode->next;
}
fprintf(fp, "}\n");
fclose(fp);
//"dot -Tpng filename -o graph->name.png"
char* command = (char*)malloc(strlen(filename) + strlen(graph->name) + 20);
strcat(command, "dot -Tsvg ");
strcat(command, filename);
strcat(command, " -o ");
strcat(command, graph->name);
strcat(command, ".svg");
system(command);
//"rm -rf filename"
command = (char*)malloc(strlen(filename) + 12);
strcat(command, "rm -rf ");
strcat(command, filename);
system(command);
}
void main()
{
printf("hello, world\n");
Graph* graph = initGraph("myGraph");
graph->visiualize = visiualize;
Person* person1 = (Person*)malloc(sizeof(Person));
person1->name = "huan1";
person1->age = "1";
Person* person2 = (Person*)malloc(sizeof(Person));
person2->name = "huan2";
person2->age = "2";
Person* person3 = (Person*)malloc(sizeof(Person));
person3->name = "huan3";
person3->age = "3";
Person* person4 = (Person*)malloc(sizeof(Person));
person4->name = "huan4";
person4->age = "4";
Person* person5 = (Person*)malloc(sizeof(Person));
person5->name = "huan5";
person5->age = "5";
Person* person6 = (Person*)malloc(sizeof(Person));
person6->name = "huan6";
person6->age = "6";
addVNode(graph, person1);
addVNode(graph, person2);
addVNode(graph, person3);
addVNode(graph, person4);
addVNode(graph, person5);
addVNode(graph, person6);
addEdge(graph, person1, person2);
addEdge(graph, person1, person3);
addEdge(graph, person2, person4);
addEdge(graph, person3, person4);
addEdge(graph, person4, person5);
addEdge(graph, person5, person6);
addEdge(graph, person6, person2);
addEdge(graph, person2, person2);
addEdge(graph, person2, person2);
graph->visiualize(graph);
}
C
1
https://gitee.com/qcliu/Clib.git
git@gitee.com:qcliu/Clib.git
qcliu
Clib
Clib
master

搜索帮助