graph的vertex和edge结构体都重新定义,kernel函数也重新命名

This commit is contained in:
建峰 2025-04-25 13:03:23 +08:00
parent b788dd74ee
commit af1a3703ba
3 changed files with 25 additions and 17 deletions

View File

@ -17,24 +17,20 @@ struct _graph_edge
{ {
struct _graph_edge* _next; struct _graph_edge* _next;
uint32_t weight; uint32_t weight;
void *target;
}; };
struct _graph_vertex struct _graph_vertex
{ {
void* obj; void* obj;
struct _graph_edge* edge; struct _graph_edge* edges;
bool* visited; bool visited;
};
struct _graph_node
{
struct _graph_vertex* edge;
}; };
struct _graph struct _graph
{ {
// -------------------- private -------------------- // -------------------- private --------------------
struct _graph_node* _head; struct _graph_vertex* _head;
uint32_t _size; uint32_t _size;
uint32_t _obj_size; uint32_t _obj_size;
@ -47,14 +43,22 @@ struct _graph
// -------------------- public -------------------- // -------------------- public --------------------
// kernel // kernel
bool (*add)(struct _graph* self, void* obj); // -> vertex
bool (*get)(struct _graph* self, uint32_t idx, void* obj); bool (*add_vertex)(struct _graph* self, void* obj);
bool (*remove)(struct _graph* self, uint32_t idx); bool (*del_vertex)(struct _graph* self, void* obj);
bool (*find_vertex)(struct _graph* self, void* obj);
// -> edge
bool (*add_edge)(struct _graph* self, void* from, void* to, uint32_t weight);
bool (*del_edge)(struct _graph* self, void* from, void* to);
bool (*find_edge)(struct _graph* self, void* from, void* to);
// traverse // traverse
bool (*dfs)(struct _graph* self, uint32_t idx); bool (*dfs)(struct _graph* self, uint32_t idx);
bool (*bfs)(struct _graph* self, uint32_t idx); bool (*bfs)(struct _graph* self, uint32_t idx);
bool (*get)(struct _graph* self, uint32_t idx, void* obj);
bool (*remove)(struct _graph* self, uint32_t idx);
// base // base
uint32_t(*size)(struct _graph* self); uint32_t(*size)(struct _graph* self);
uint32_t(*capacity)(struct _graph* self); uint32_t(*capacity)(struct _graph* self);

View File

@ -12,6 +12,7 @@
#include "queue.h" #include "queue.h"
#include "stack.h" #include "stack.h"
#if 0
static uint32_t graph_size(struct _graph* self) static uint32_t graph_size(struct _graph* self)
{ {
if(self == NULL) if(self == NULL)
@ -277,6 +278,7 @@ done1:
done: done:
return false; return false;
} }
#endif
graph_t graph_new2(uint32_t obj_size, uint32_t capacity) graph_t graph_new2(uint32_t obj_size, uint32_t capacity)
{ {
@ -287,11 +289,11 @@ graph_t graph_new2(uint32_t obj_size, uint32_t capacity)
return NULL; return NULL;
} }
if(graph_init2(graph, obj_size, capacity) != true) // if(graph_init2(graph, obj_size, capacity) != true)
{ // {
free(graph); // free(graph);
return NULL; // return NULL;
} // }
return graph; return graph;
} }

View File

@ -10,6 +10,7 @@
*/ */
#include "test.h" #include "test.h"
#if 0
void test_graph_new(void) void test_graph_new(void)
{ {
graph_t graph = graph_new2(sizeof(int), 10); graph_t graph = graph_new2(sizeof(int), 10);
@ -56,12 +57,13 @@ void test_graph_from_matrix(void)
graph_free(&graph); graph_free(&graph);
TEST_ASSERT_NULL(graph); TEST_ASSERT_NULL(graph);
} }
#endif
void test_graph(void) void test_graph(void)
{ {
UnitySetTestFile(__FILE__); UnitySetTestFile(__FILE__);
RUN_TEST(test_graph_new); // RUN_TEST(test_graph_new);
// RUN_TEST(test_graph_print); // RUN_TEST(test_graph_print);
// RUN_TEST(test_graph_from_matrix); // RUN_TEST(test_graph_from_matrix);
} }