我应该创建一个函数以在第一个节点中显示数据,然后使该节点成为列表中的最后一个节点。但是我认为更简单的方法是,使第一个节点之后的节点成为列表的开头,并在列表末尾插入一个具有先前第一个节点数据的新节点,我尝试使用不同的方法,但是这样做时,我会得到随机的问号和符号,我尝试了不同的方法,但我无法真正弄清楚问题出在哪里。

该代码附在下面

  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/

10-11 23:21
查看更多