我应该创建一个函数以在第一个节点中显示数据,然后使该节点成为列表中的最后一个节点。但是我认为更简单的方法是,使第一个节点之后的节点成为列表的开头,并在列表末尾插入一个具有先前第一个节点数据的新节点,我尝试使用不同的方法,但是这样做时,我会得到随机的问号和符号,我尝试了不同的方法,但我无法真正弄清楚问题出在哪里。
该代码附在下面
int places::showfirst()
{
node * current = head;
node * temp = current -> next;
node * temp2 = new node;
cout << "The first place you visited is \n\n\t\n " << current -> place << endl;
current->place = temporary;
first = new char [strlen(temporary) +1];
strcpy(first,temporary);
while(current->next)
{
current = current -> next;
}
head = temp;
current -> next = temp2;
temp2 -> next = NULL;
temp2->place = first;
cout<<"THIS IS THE NEW LAST NODE " << temp2->place << endl;
return 1;
}
任何建议,将不胜感激,谢谢你。
最佳答案
无需重新分配或取消IMO的内存。您可以简单地更改链接并将现有的头节点转换为最后一个:
node * current = head;
node * temp = current -> next;
cout << "The first place you visited is \n\n\t\n " << current -> place << endl;
while(current->next)
{
current = current -> next;
}
current -> next = head;
head -> next = NULL;
head = temp;
关于c++ - 在列表末尾插入一个节点,其中包含第一个节点的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20471768/