我有一个能够在每个节点中保存字符的双向链表。这就是我向每个节点输入字符的方法。
printf("Enter string of characters for the list: ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
Insert(s[i],&Header1);
现在我希望修改列表以在每个节点中存储单词。用户提供的输入是一个句子。我如何确保每个单词(以空格分隔)进入列表的节点?
我有一个能够在每个节点中保存字符的双向链表。这就是我向每个节点输入字符的方法。
printf("Enter string of characters for the list: ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
Insert(s[i],&Header1);
现在我希望修改列表以在每个节点中存储单词。用户提供的输入是一个句子。我如何确保每个单词(以空格分隔)进入列表的节点?
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
值传递到您的列表中,否则您的所有值都将是相同的参考!
char *word;
while (NULL != (word = strtok(s, " ."))) {
Insert(word, &Header1);
}
您需要将节点修改为
struct node {
node *prev;
char *data;
node *next;
}
并将其更改scanf
为 ' fgets
。
注意:我已将 data 声明为 a char *
,因此您不能使用 strncpy。如果你想复制字符串(而不是分配指针),那么你应该malloc
数据。