c语言 单向链表转化为字符串
时间: 2023-06-21 11:16:20 浏览: 142
基于c语言的单向链表程序
5星 · 资源好评率100%
将单向链表转化为字符串,可以按照以下步骤进行:
1. 定义一个字符数组 str,用来存储链表转化后的字符串。
2. 遍历单向链表,将每个节点的数据转化为字符串,并追加到 str 中。
3. 在每个节点数据的字符串后面添加一个分隔符,可以使用空格、逗号或其他符号。
4. 最后去掉最后一个节点数据字符串后面的分隔符,即可得到链表转化后的字符串。
下面是一个示例代码,假设单向链表的节点结构体定义如下:
```c
typedef struct node {
int data;
struct node *next;
} Node;
```
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LEN 1000 // 定义最大字符串长度
char* list_to_string(Node *head) {
char *str = (char*)malloc(sizeof(char) * MAX_STR_LEN); // 分配字符串空间
memset(str, 0, MAX_STR_LEN); // 初始化字符串为空
Node *p = head;
while (p != NULL) {
char temp[20]; // 定义一个临时字符串,用于存储节点数据的字符串表示
sprintf(temp, "%d ", p->data); // 将节点数据转化为字符串,并添加分隔符
strcat(str, temp); // 将节点数据字符串追加到 str 中
p = p->next; // 指向下一个节点
}
str[strlen(str) - 1] = '\0'; // 去掉最后一个节点数据字符串后面的分隔符
return str;
}
int main() {
Node *head = (Node*)malloc(sizeof(Node));
head->data = 1;
head->next = (Node*)malloc(sizeof(Node));
head->next->data = 2;
head->next->next = (Node*)malloc(sizeof(Node));
head->next->next->data = 3;
head->next->next->next = NULL;
char *str = list_to_string(head);
printf("链表转化后的字符串为:%s\n", str);
free(head->next->next);
free(head->next);
free(head);
free(str);
return 0;
}
```
输出结果为:
```
链表转化后的字符串为:1 2 3
```
阅读全文