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

c 中l(wèi)ist轉(zhuǎn)json

錢多多1年前10瀏覽0評論

在C語言中,一個常用的數(shù)據(jù)結(jié)構(gòu)是鏈表(list),而在現(xiàn)代Web開發(fā)中,JSON(JavaScript Object Notation)成為了最常用的數(shù)據(jù)交換格式之一。因此,將鏈表轉(zhuǎn)換成JSON的需求也非常普遍。

{
"name": "list",
"type": "linked-list",
"head": {
"data": 5,
"next": {
"data": 10,
"next": {
"data": 15,
"next": {
"data": 20,
"next": null
}
}
}
}
}

如上所示,JSON中將鏈表抽象為一個對象,其中包括鏈表的名稱、類型和頭節(jié)點。頭節(jié)點中包含節(jié)點的值和指向下一個節(jié)點的指針。接下來,我們將演示如何在C語言中將鏈表轉(zhuǎn)換成JSON。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void serializeList(Node *head, char *output) {
sprintf(output, "{ \"name\": \"list\", \"type\": \"linked-list\", \"head\": %s }", serializeNode(head));
}
char *serializeNode(Node *node) {
if (node == NULL) {
return "null";
} else {
char *result = (char *)malloc(sizeof(char) * 100);
sprintf(result, "{ \"data\": %d, \"next\": %s }", node->data, serializeNode(node->next));
return result;
}
}
int main() {
Node *head = malloc(sizeof(Node));
head->data = 5;
head->next = malloc(sizeof(Node));
head->next->data = 10;
head->next->next = malloc(sizeof(Node));
head->next->next->data = 15;
head->next->next->next = malloc(sizeof(Node));
head->next->next->next->data = 20;
head->next->next->next->next = NULL;
char *output = (char *)malloc(sizeof(char) * 500);
serializeList(head, output);
printf("%s\n", output);
free(output);
free(head->next->next->next);
free(head->next->next);
free(head->next);
free(head);
return 0;
}

在此代碼中,我們使用了sprintf和malloc函數(shù)來創(chuàng)建JSON字符串,并且有一個遞歸的serializeNode函數(shù)將鏈表節(jié)點轉(zhuǎn)換成JSON格式。最后,我們在主函數(shù)中創(chuàng)建了一個帶有四個節(jié)點的鏈表,并將其轉(zhuǎn)換成JSON字符串打印出來。

總結(jié)來說,在C語言中將鏈表轉(zhuǎn)換成JSON需要將鏈表抽象為一個對象,并將每個節(jié)點抽象為JSON對象中的一個鍵-值對。此外,需要使用遞歸函數(shù)來將鏈表節(jié)點轉(zhuǎn)換成JSON格式并將其串聯(lián)起來。