用c语言将字符串abcdef用链表存储?

如题所述

#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct node {
char data;
struct node *next;
} Node;
int main() {
char str[] = "abcdef"; // 要存储的字符串
Node *head = NULL; // 链表头指针,初始化为 NULL
Node *tail = NULL; // 链表尾指针,初始化为 NULL
for (int i = 0; i < sizeof(str) - 1; i++) {
// 动态分配节点内存空间
Node *p = (Node *)malloc(sizeof(Node));
p->data = str[i]; // 存储字符数据
p->next = NULL;
if (head == NULL) {
head = p;
} else {
tail->next = p;
}
tail = p;
}
// 遍历链表并输出各节点数据
printf("链表存储的字符串为:");
for (Node *p = head; p != NULL; p = p->next) {
printf("%c", p->data);
}
printf("\n");
// 释放链表节点的内存空间
Node *p = head;
while (p != NULL) {
Node *q = p->next;
free(p);
p = q;
}
return 0;
}
此代码利用循环遍历字符串中的每个字符,并为每个字符动态分配一个链表节点,将其连接成一个链表。然后,使用循环遍历链表并输出各节点数据。最后,释放所有动态分配的链表节点内存空间,以避免内存泄漏。
温馨提示:答案为网友推荐,仅供参考
相似回答