代码拉取完成,页面将自动刷新
#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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。