#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;
}