我的输出:
下一个节点是:这个
在这里我得到下一个节点This
......实际的下一个节点应该是World
。如果我将 Next() 的返回值更改为,
return nextnode;
然后打印出来,
下一个节点是:你好
我无法World
作为下一个节点打印。
我需要帮助...这是我的代码,
class Element
{
public:
Element(const std::string& str): data(str), next(nullptr)
{
}
void Append(const Element& elem)
{
Element *tail = this;
//printf("%s\n", tail->data.c_str());
while (tail->next)
tail = tail->next;
tail->next = new Element(elem.data);
}
void Print(int n)
{
if(n==1)
{
printf("The next node is: %s\n", Next()->data.c_str());
}
}
Element *Next()
{
Element *nextnode = this;
if(nextnode->next)
return nextnode->next;
return NULL;
}
private:
string data;
Element *next;
};
void main()
{
// construct a list
Element *root = new Element("Hello");
root->Append(Element("World"));
root->Append(Element("This"));
root->Append(Element("Is"));
root->Append(Element("a"));
root->Append(Element("Linked"));
root->Append(Element("List"));
root->Next()->Print(1);//It prints 'World' if I change code here as root->Print(1);
// But I dont want to change here...
}