【问题标题】:How do i input words to linked list?我如何输入单词到链表?
【发布时间】:2012-10-26 10:48:06
【问题描述】:

我有一个双向链表,能够在每个节点中保存字符。这就是我向每个节点输入字符的方法。

printf("Enter string of characters for the list: ");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
    Insert(s[i],&Header1);

现在我想修改列表以在每个节点中存储单词。用户提供的输入是一个句子。如何确保每个单词(以空格分隔)进入列表的节点?

【问题讨论】:

  • 你需要告诉我们Header1的类型和结构。当然,您必须修改 Insert 函数(因此拥有该代码也很好),并在循环中调用 scanf
  • 或者你可以通过gets()函数获取输入(它也会占用空格)然后你可以将字符串存储在你的节点中(当然,你必须改变你的结构节点取字符串而不是字符)
  • 你用过的Insert里面的代码是什么..给出一些细节

标签: c string linked-list


【解决方案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 按值传递到您的列表中,否则您的所有值将是相同的引用!

【讨论】:

    【解决方案2】:
    char *word;
    while (NULL != (word = strtok(s, " ."))) {
        Insert(word, &Header1);
    }
    

    【讨论】:

      【解决方案3】:

      需要将节点修改为
      struct node {
      node *prev;
      char *data;
      node *next;
      }


      并将scanf 更改为'fgets
      注意: 我已将数据声明为 char *,因此您不能使用 strncpy。如果你想复制字符串(而不是分配指针),那么你应该malloc数据。

      【讨论】:

        猜你喜欢
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 2023-01-24
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        相关资源
        最近更新 更多