我有一个双链表,能够在每个节点中保存字符。这就是我为每个节点输入字符的方法。
printf("Enter string of characters for the list: ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
Insert(s[i],&Header1);
现在我希望修改列表以在每个节点中存储单词。用户提供的输入是一个句子。如何确保每个单词(由空格分隔)进入列表的节点?
答案 0 :(得分:1)
while ( sscanf( sentence, "%s", &node_value ) == 1 )
{
//Call to insert into your list goes here
//Each pass node_value will be the next word
}
注意:您必须按值node_value
将值传递到列表中,否则您的所有值都将是相同的参考值!
答案 1 :(得分:1)
char *word;
while (NULL != (word = strtok(s, " ."))) {
Insert(word, &Header1);
}
答案 2 :(得分:0)
您需要将节点修改为
struct node {
node *prev;
char *data;
node *next;
}
并将scanf
更改为“fgets
。
注意:我已将数据声明为char *
,因此您无法使用strncpy。如果要复制字符串(而不是指定指针),那么您应该malloc
数据。