-1

各ノードに文字を保持できる二重リンク リストがありました。これは、各ノードに文字を入力するために行うことです。

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

ここで、各ノードに単語を格納するようにリストを変更したいと思います。ユーザーが提供する入力は文です。各単語 (スペースで区切られている) がリストのノードに入るようにするにはどうすればよいですか?

4

3 に答える 3

1
char *word;
while (NULL != (word = strtok(s, " ."))) {
    Insert(word, &Header1);
}
于 2012-10-26T10:59:57.653 に答える
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リストに値を渡す必要があります。そうしないと、すべての値が同じ参照になります!

于 2012-10-26T10:54:19.327 に答える
0

ノードを次のように変更する必要があります
struct node {
node *prev;
char *data;
node *next;
}


scanfを ' に変更しfgetsます。
注: data を として宣言したchar *ので、strncpy は使用できません。(ポインターを割り当てる代わりに)文字列をコピーする場合はmalloc、データをコピーする必要があります。

于 2012-10-26T10:54:27.600 に答える