欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 遞歸樹狀json

李中冰1年前7瀏覽0評論

在C語言中,生成樹狀JSON格式的數據結構是一項常見的任務。通過遞歸函數,可以輕松地遍歷樹狀結構,并將其轉換為JSON格式。下面我們將介紹如何使用C語言遞歸函數生成樹狀JSON格式的數據結構。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAX_CHILDREN 10
typedef struct node {
char name[256];
struct node *children[MAX_CHILDREN];
int num_children;
} node;
node *create_node(char *name) {
node *new_node = malloc(sizeof(node));
strcpy(new_node->name, name);
new_node->num_children = 0;
return new_node;
}
void add_child(node *parent, node *child) {
parent->children[parent->num_children] = child;
parent->num_children++;
}
void free_tree(node *root) {
if (root == NULL) {
return;
}
for (int i = 0; i < root->num_children; i++) {
free_tree(root->children[i]);
}
free(root);
}
void print_json(node *root) {
printf("{\n");
printf("\"name\":\"%s\",\n", root->name);
printf("\"children\":[\n");
for (int i = 0; i < root->num_children; i++) {
print_json(root->children[i]);
if (i < root->num_children - 1) {
printf(",");
}
printf("\n");
}
printf("]\n}");
}
int main() {
node *root = create_node("A");
node *b = create_node("B");
add_child(root, b);
add_child(b, create_node("C"));
add_child(b, create_node("D"));
add_child(root, create_node("E"));
print_json(root);
free_tree(root);
return 0;
}

上述代碼中定義了一個節點的結構體node,每個節點包含一個名稱和一個指向子節點數組的指針。通過create_node函數可以創建新的節點。add_child函數可以將子節點添加到父節點的子節點列表中。free_tree函數用于釋放整個樹的內存。print_json函數使用遞歸方法,遍歷整個樹狀結構,并將其轉換為JSON格式。

在上述示例中,創建了一個名為A的根節點,兩個子節點B和E。在B節點中添加了兩個子節點C和D。通過調用print_json函數,可以將整個樹狀結構轉換為JSON格式并打印出來。