添加打印信息

This commit is contained in:
建峰 2024-09-03 12:49:08 +08:00
parent 14ae536d71
commit 0ac0976bb6
3 changed files with 50 additions and 4 deletions

View File

@ -29,6 +29,7 @@ struct _graph {
// init // init
void (*init)(struct _graph *self); void (*init)(struct _graph *self);
void (*from_matrix)(struct _graph *self, uint32_t **edges, uint32_t size);
// kernel // kernel
bool (*add)(struct _graph *self, void *obj); bool (*add)(struct _graph *self, void *obj);
@ -45,6 +46,9 @@ struct _graph {
// //
bool (*clear)(struct _graph *self); bool (*clear)(struct _graph *self);
void (*destory)(struct _graph *self); void (*destory)(struct _graph *self);
void (*print)(struct _graph *self);
void (*print_obj)(void *obj);
}; };
typedef struct _graph* graph_t; typedef struct _graph* graph_t;

View File

@ -75,6 +75,31 @@ static void graph_destory(struct _graph *self)
} }
} }
static void graph_print(struct _graph *self)
{
if(self == NULL || self->_head == NULL || self->print_obj == NULL)
{
return;
}
printf("\n ");
for(uint32_t i = 0; i < self->_capacity; i++)
{
self->print_obj((char *)self->_head->obj + i * self->_obj_size);
}
printf("\n");
for(uint32_t i = 0; i < self->_capacity; i++)
{
self->print_obj((char *)self->_head->obj + i * self->_obj_size);
for(uint32_t j = 0; j < self->_capacity; j++)
{
printf(" %2d ", self->_head->edge[i][j]);
}
printf("\n");
}
printf("\n");
}
static void graph_init2(struct _graph *self) static void graph_init2(struct _graph *self)
{ {
if(self == NULL || self->_head == NULL) if(self == NULL || self->_head == NULL)
@ -84,6 +109,7 @@ static void graph_init2(struct _graph *self)
for(uint32_t i = 0; i < self->_capacity; i++) for(uint32_t i = 0; i < self->_capacity; i++)
{ {
*((int *)self->_head->obj + i) = i;
for(uint32_t j = 0; j < self->_capacity; j++) for(uint32_t j = 0; j < self->_capacity; j++)
{ {
self->_head->edge[i][j] = 0; self->_head->edge[i][j] = 0;
@ -116,6 +142,9 @@ graph_t graph_new2(uint32_t obj_size, uint32_t capacity)
graph->capacity = graph_capacity; graph->capacity = graph_capacity;
graph->clear = graph_clear; graph->clear = graph_clear;
graph->print_obj = NULL;
graph->print = graph_print;
graph->_head = (struct _graph_node *)malloc(sizeof(struct _graph_node)); graph->_head = (struct _graph_node *)malloc(sizeof(struct _graph_node));
if(graph->_head == NULL) if(graph->_head == NULL)
{ {

View File

@ -12,13 +12,26 @@
void test_graph_new(void) void test_graph_new(void)
{ {
graph_t g = graph_new2(sizeof(int), 10); graph_t graph = graph_new2(sizeof(int), 10);
TEST_ASSERT(g != NULL); TEST_ASSERT_NOT_NULL(graph);
graph_free(&g); graph_free(&graph);
TEST_ASSERT(g == NULL); TEST_ASSERT_NULL(graph);
}
void test_graph_print(void)
{
graph_t graph = graph_new2(sizeof(int), 10);
TEST_ASSERT_NOT_NULL(graph);
graph->print_obj = print_num;
graph->print(graph);
graph_free(&graph);
TEST_ASSERT_NULL(graph);
} }
void test_graph(void) void test_graph(void)
{ {
RUN_TEST(test_graph_new); RUN_TEST(test_graph_new);
RUN_TEST(test_graph_print);
} }