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();
}