在链表中打印字符串

时间:2015-05-28 22:02:36

标签: c

所以我无法让我的程序打印我输入的字符串,或者你想要列入列表中的许多字符串,它总是打印出多次输入的最后一个字符串。我很抱歉所有注释掉的代码,大部分都是你不需要阅读的。

0

3 个答案:

答案 0 :(得分:1)

问题似乎是主函数的myStrchar[],所以每次插入数据时它的内容都会被夸大。请注意,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

之前执行此操作