所以我无法让我的程序打印我输入的字符串,或者你想要列入列表中的许多字符串,它总是打印出多次输入的最后一个字符串。我很抱歉所有注释掉的代码,大部分都是你不需要阅读的。
0
答案 0 :(得分:1)
问题似乎是主函数的myStr
是char[]
,所以每次插入数据时它的内容都会被夸大。请注意,struct node data
字段是char*
,它只是指向myStr
地址。
希望这有帮助!
答案 1 :(得分:0)
char *data
来自struct的变量总是被指定为myStr
的地址作为它的指针,它只会显示myStr
的值
答案 2 :(得分:0)
你的程序只有一个地方可以写你的输入,myStr
每次输入时,myStr都会被删除,并且会向myStr写入其他内容
所有节点的数据成员,指向myStr。 myStr只包含最后一个输入
display()
函数询问每个节点data
是什么。 data
指向myStr,因此每个节点都会打印myStr的内容。 myStr只包含最后一个输入,因此所有节点都打印最后一个输入。
要解决此问题,在add()
和append()
函数中,您需要使用malloc()
为数据成员提供一些内存。然后使用strcpy()
将myStr的内容复制到数据成员
temp->data = malloc ( strlen ( myStr) + 1);
strcpy ( temp->data, myStr);
这样做而不是temp->data = myStr;
您需要#include<string.h>
delete()
函数中的内存需要是空闲的()
free(temp->data);
在释放temp