Reimplement the graph code for C

This commit is contained in:
krahets
2023-10-29 00:08:28 +08:00
parent c37f0981f0
commit efbbfd8203
7 changed files with 420 additions and 614 deletions
+1
View File
@@ -18,6 +18,7 @@
#include "list_node.h"
#include "print_util.h"
#include "tree_node.h"
#include "vertex.h"
// hash table lib
#include "uthash.h"
+49
View File
@@ -0,0 +1,49 @@
/**
* File: vertex.h
* Created Time: 2023-10-28
* Author: Krahets (krahets@163.com)
*/
#ifndef VERTEX_H
#define VERTEX_H
#ifdef __cplusplus
extern "C" {
#endif
/* 顶点结构体 */
typedef struct {
int val;
} Vertex;
/* 构造函数,初始化一个新节点 */
Vertex *newVertex(int val) {
Vertex *vet;
vet = (Vertex *)malloc(sizeof(Vertex));
vet->val = val;
return vet;
}
/* 将值数组转换为顶点数组 */
Vertex **valsToVets(int *vals, int size) {
Vertex **vertices = (Vertex **)malloc(size * sizeof(Vertex *));
for (int i = 0; i < size; ++i) {
vertices[i] = newVertex(vals[i]);
}
return vertices;
}
/* 将顶点数组转换为值数组 */
int *vetsToVals(Vertex **vertices, int size) {
int *vals = (int *)malloc(size * sizeof(int));
for (int i = 0; i < size; ++i) {
vals[i] = vertices[i]->val;
}
return vals;
}
#ifdef __cplusplus
}
#endif
#endif // VERTEX_H