C++ 在循环双链接列表中找到正确的插入位置

C++ 在循环双链接列表中找到正确的插入位置,c++,list,pointers,C++,List,Pointers,我想把一些人的名字按字母顺序插入到一个循环的双链接列表中,但我最多只能加三个,我不知道为什么会这样。我将要插入的新节点传递给insert函数,创建指向它的指针,并循环遍历整个列表以找到正确的插入点。但是,当它有三个以上的名称时,一个节点被删除,另一个节点被插入。有人能帮我弄清楚吗 其他详情: 每个节点都有两个名为next和prev的指针和一个名为data的字符串作为数据成员 列表类包含插入和显示函数,以及指向虚拟头部节点的头部指针。当列表初始化时,该头部节点的next和prev指针指向自身

我想把一些人的名字按字母顺序插入到一个循环的双链接列表中,但我最多只能加三个,我不知道为什么会这样。我将要插入的新节点传递给
insert
函数,创建指向它的指针,并循环遍历整个列表以找到正确的插入点。但是,当它有三个以上的名称时,一个节点被删除,另一个节点被插入。有人能帮我弄清楚吗

其他详情:

  • 每个
    节点
    都有两个名为
    next
    prev
    的指针和一个名为
    data
    字符串作为数据成员
  • 列表
    类包含插入和显示函数,以及指向虚拟头部节点的头部指针。当
    列表
    初始化时,该头部节点的
    next
    prev
    指针指向自身
这是我编写的插入函数:

void List::insert(Node newObject)
{


    Node *toInsert = &newObject;
    Node *cur = head->next;

    while((cur != head) && (newObject.data > cur->data))
    {
            cout << "Is this loop entered?" << endl;
            cur = cur->next;

    }

    toInsert->next = cur;
    toInsert->prev = cur->prev;

    cur->prev = toInsert;
    toInsert->prev->next = toInsert;        

}

insert
函数插入一个局部变量,当控件从函数中传递出去时,该变量将超出范围。稍后,您尝试取消引用指向该消失对象的指针,这是未定义的行为

#include "list.h"
#include "node.h"

using namespace std;

int main()
{


    Node nikhil = Node("Nikhil");
    Node kaustubh = Node("Kaustubh");
    Node jon = Node("Jonathan");
    Node james = Node("James");
    Node elias = Node("Elias");
    Node kenny = Node("Kenny");

    List suiteMates;

    suiteMates.insert(nikhil);
    suiteMates.insert(kaustubh);
    suiteMates.insert(jon);
    suiteMates.insert(james);
    suiteMates.insert(elias);
    suiteMates.insert(kenny);

    suiteMates.display();
}