怎么把这个代码改成 将 being(字符串)存入链表 而不是将数字存入链表(语言-c++)

#define _CRT_SECURE_NO_WARNINGS
#include
#include

typedef struct Node {
int data;
struct Node* link;
}LNode, * List;

List CreatList(List& L)
{

int x;
L = (List)malloc(sizeof(LNode));//带头结点的链表
LNode* s, * r = L;//等价于List s,r=L;r代表链表表尾指针,指向链表尾部
scanf("%d", &x);//从标准输入读取数据
while (x!=9999) {
    s = (LNode*)malloc(sizeof(LNode));//申请一个空间,强制类型转换
    s->data = x;
    r->link = s;//让尾部节点指向新节点
    r = s;//r指向新的表位节点
    scanf("%d", &x);//读取标准输入
}
r->link = NULL;
return L;

}
//打印链表
void PrintList(List L)
{
L = L->link;
while (L != NULL)
{
printf("%3d", L->data);
L = L->link;
}
printf("\n");
}
int main()
{
List str1,str2;//头指针
CreatList(str1);//输入数据可以为1 2 3 4 5 6 9999(尾插法输入链表)
//CreatList(str2);//输入数据可以为b e i n g 9999(尾插法输入链表)
PrintList(str1);//链表打印
//PrintList(str2);
return 0;
}

把链表结构里的int型变量data改为char类型,然后在CreatList()函数获取链表数据时,用scanf()函数获取一个字符串到字符数组,然后在循环中将这个字符串存入链表,最后在打印链表数据时用打印字符形式即可。(如果一定要用数字来结束的话,可以修改下用字符形式的'9'来结束。)代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>

typedef struct Node {
    char data;  //把int类型改为char类型 
    struct Node* link;
}LNode, * List;

List CreatList(List& L)
{

    char  x[20];  //用字符串数组存储输入的字符串 
    L = (List)malloc(sizeof(LNode));//带头结点的链表
    LNode* s, * r = L;//等价于List s,r=L;r代表链表表尾指针,指向链表尾部
    scanf("%s", x);//从标准输入读取数据,获取字符串输入用于存入链表 
    int i=0;
    while (x[i]!='\0') {  //把字符串结尾的空字符'\0'Z之前的字符全部存入链表 
        s = (LNode*)malloc(sizeof(LNode));//申请一个空间,强制类型转换
        s->data = x[i];  //存储字符数组当前位置的字符 
        r->link = s;//让尾部节点指向新节点
        r = s;//r指向新的表位节点
        i++;  //处理下个字符 
    }
    r->link = NULL;
    return L;
}
//打印链表
void PrintList(List L)
{
    L = L->link;
    while (L != NULL)
    {
    printf("%c", L->data);  //相应的用%c字符形式打印data变量 
    L = L->link;
    }
    printf("\n");
}
int main()
{
    List str1,str2;//头指针
    CreatList(str1);//输入数据可以为1 2 3 4 5 6 9999(尾插法输入链表)
    //CreatList(str2);//输入数据可以为b e i n g 9999(尾插法输入链表)
    PrintList(str1);//链表打印
    //PrintList(str2);
    return 0;
}

img