C++ 在C+中使用链表拆分单词+;

C++ 在C+中使用链表拆分单词+;,c++,arrays,pointers,linked-list,C++,Arrays,Pointers,Linked List,我对链表有问题。我写了一个函数,想把一个句子分成几个词。就像我有一个句子“我爱你”,它分成三个字“我”,“爱”,“你”。我有指向句子第一个字母的头指针。函数将返回一个包含每个单词的头指针的数组 它工作正常,只有一个问题。如果一个单词只有一个字母。它将与第二个单词结合。像“我爱你”,它会给出“我爱”和“爱”、“你”这样的词 我想了很长时间,其他功能都很好。我想问题已经到了,有人能帮忙吗 Node* SplitToWords(Node* cursor){ int i=CountWords(curso

我对链表有问题。我写了一个函数,想把一个句子分成几个词。就像我有一个句子“我爱你”,它分成三个字“我”,“爱”,“你”。我有指向句子第一个字母的头指针。函数将返回一个包含每个单词的头指针的数组

它工作正常,只有一个问题。如果一个单词只有一个字母。它将与第二个单词结合。像“我爱你”,它会给出“我爱”和“爱”、“你”这样的词

我想了很长时间,其他功能都很好。我想问题已经到了,有人能帮忙吗

Node* SplitToWords(Node* cursor){
int i=CountWords(cursor);

Node* array=new Node[i];
Node* t;
t=cursor;

for (int j=0; j<i-1; j++) {
    array[j]=*t;
    t=t->link;
    while (t->data!=' ') {
        cursor=t;
        t=t->link;
    }
    t=t->link;
    cursor->link=NULL;
}
array[i-1]=*t;

return array;
}
Node*SplitToWords(Node*cursor){
int i=计数字(光标);
节点*数组=新节点[i];
节点*t;
t=光标;
对于(int j=0;jlink;
而(t->数据!=''){
光标=t;
t=t->link;
}
t=t->link;
光标->链接=NULL;
}
数组[i-1]=*t;
返回数组;
}

您处理单词的第一个字母时出错。此
数组[j]=*t;
将节点复制到数组中。最后
光标->链接=NULL;
如果单词的长度为一个字母,则不会对此副本进行任何更改。
要修复此问题,您可以记住第一个节点并将其插入
for
循环末尾的数组中

for (int j=0; j<i-1; j++) {
    Node *first_letter = t;
    t=t->link;
    while (t->data!=' ') {
        cursor=t;
        t=t->link;
    }
    t=t->link;
    cursor->link=NULL;
    array[j]=*first_letter;
}
for(int j=0;jlink;
而(t->数据!=''){
光标=t;
t=t->link;
}
t=t->link;
光标->链接=NULL;
数组[j]=*第一个字母;
}

你在调试器中通过了吗?考虑使用Boost ToKeNeisher()来解决这个问题。是的,我已经尝试过了。我不知道为什么一个字母的单词是“Currase>链接=NULL”;不起作用…按照调试器中的代码进行操作,不要说“我不知道为什么游标->链接=NULL不起作用”。你应该问,“我的代码没有达到我的预期,所以它实际上在做什么”非常感谢。我仍在研究指针,我忘记了这个问题。谢谢你的帮助!!!!